252 lines
6.5 KiB
Plaintext
252 lines
6.5 KiB
Plaintext
# Nginx 静态文件服务 + 智能代理 + 自定义 404 页面
|
||
|
||
# AI 爬虫 User-Agent 黑名单
|
||
map $http_user_agent $badbot {
|
||
default 0;
|
||
~*(GPTBot|ChatGPT-User|Claude-Web|ClaudeBot|Bytespider|CCBot|Google-Extended) 1;
|
||
}
|
||
|
||
# 主站 HTTP(SSL 已在外层 nginx 终结,此处只需 serve 内容)
|
||
server {
|
||
root /usr/share/nginx/html;
|
||
index index.html;
|
||
|
||
client_max_body_size 500M;
|
||
|
||
listen 80;
|
||
server_name redpowerfuture.com www.redpowerfuture.com;
|
||
|
||
error_page 404 /404.html;
|
||
|
||
location = /404.html {
|
||
internal;
|
||
}
|
||
|
||
location = / {
|
||
return 302 /web/index.html;
|
||
}
|
||
|
||
location = /web {
|
||
return 302 /web/;
|
||
}
|
||
|
||
location = /sys {
|
||
return 302 /sys/;
|
||
}
|
||
|
||
location /web/ {
|
||
alias /usr/share/nginx/html/web/;
|
||
try_files $uri $uri/ /web/index.html;
|
||
}
|
||
|
||
location /sys/ {
|
||
alias /usr/share/nginx/html/;
|
||
try_files $uri $uri/ /index.html;
|
||
}
|
||
|
||
location / {
|
||
try_files $uri $uri/ @proxy;
|
||
}
|
||
|
||
location @proxy {
|
||
if ($uri ~ \.[^./]+$) {
|
||
return 404;
|
||
}
|
||
|
||
proxy_pass http://__API_HOST__:8000;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
proxy_connect_timeout 75s;
|
||
proxy_send_timeout 86400s;
|
||
proxy_read_timeout 86400s;
|
||
}
|
||
}
|
||
|
||
# Gitea HTTP → HTTPS 重定向
|
||
server {
|
||
listen 80;
|
||
server_name gitea.redpowerfuture.com;
|
||
if ($badbot) {
|
||
return 444;
|
||
}
|
||
return 301 https://$host$request_uri;
|
||
}
|
||
|
||
# MinIO HTTP/HTTPS(增加 WebSocket 支持)
|
||
server {
|
||
listen 80;
|
||
server_name minio.redpowerfuture.com;
|
||
location / {
|
||
proxy_pass http://__API_HOST__:9001;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
# WebSocket 支持
|
||
proxy_set_header Upgrade $http_upgrade;
|
||
proxy_set_header Connection "upgrade";
|
||
proxy_read_timeout 86400s;
|
||
}
|
||
}
|
||
|
||
# Consul HTTP(仅 HTTP)
|
||
server {
|
||
listen 80;
|
||
server_name consul.redpowerfuture.com;
|
||
location / {
|
||
proxy_pass http://__API_HOST__:8500;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
}
|
||
}
|
||
|
||
# MeiliSearch HTTP(仅 HTTP)
|
||
server {
|
||
listen 80;
|
||
server_name meilisearch.redpowerfuture.com;
|
||
location / {
|
||
proxy_pass http://__API_HOST__:7700;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
}
|
||
}
|
||
# 项目管理 HTTP(仅 HTTP)
|
||
server {
|
||
listen 80;
|
||
server_name pm.redpowerfuture.com;
|
||
location / {
|
||
proxy_pass http://__API_HOST__:8080;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
}
|
||
}
|
||
# jaeger HTTP(仅 HTTP)
|
||
server {
|
||
listen 80;
|
||
server_name jaeger.redpowerfuture.com;
|
||
location / {
|
||
proxy_pass http://__API_HOST__:16686;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
}
|
||
}
|
||
# observer HTTP(仅 HTTP)
|
||
server {
|
||
listen 80;
|
||
server_name observer.redpowerfuture.com;
|
||
location / {
|
||
proxy_pass http://__API_HOST__:18080;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
}
|
||
}
|
||
# ==================== 主站 HTTPS(静态文件 + API 反向代理) ====================
|
||
server {
|
||
root /usr/share/nginx/html;
|
||
index index.html;
|
||
|
||
client_max_body_size 500M;
|
||
|
||
listen 443 ssl;
|
||
server_name redpowerfuture.com www.redpowerfuture.com;
|
||
ssl_certificate /etc/nginx/ssl/scs1779764972146_redpowerfuture.com_server.crt;
|
||
ssl_certificate_key /etc/nginx/ssl/scs1779764972146_redpowerfuture.com_server.key;
|
||
ssl_protocols TLSv1.2 TLSv1.3;
|
||
ssl_ciphers HIGH:!aNULL:!MD5;
|
||
|
||
error_page 404 /404.html;
|
||
|
||
location = /404.html {
|
||
internal;
|
||
}
|
||
|
||
location = / {
|
||
return 302 /web/index.html;
|
||
}
|
||
|
||
location = /web {
|
||
return 302 /web/;
|
||
}
|
||
|
||
location = /sys {
|
||
return 302 /sys/;
|
||
}
|
||
|
||
location /web/ {
|
||
alias /usr/share/nginx/html/web/;
|
||
try_files $uri $uri/ /web/index.html;
|
||
}
|
||
|
||
location /sys/ {
|
||
alias /usr/share/nginx/html/;
|
||
try_files $uri $uri/ /index.html;
|
||
}
|
||
|
||
location / {
|
||
try_files $uri $uri/ @proxy;
|
||
}
|
||
|
||
location @proxy {
|
||
if ($uri ~ \.[^./]+$) {
|
||
return 404;
|
||
}
|
||
|
||
proxy_pass http://__API_HOST__:8000;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
proxy_connect_timeout 75s;
|
||
proxy_send_timeout 86400s;
|
||
proxy_read_timeout 86400s;
|
||
}
|
||
}
|
||
|
||
# ==================== Gitea HTTPS ====================
|
||
server {
|
||
listen 443 ssl;
|
||
server_name gitea.redpowerfuture.com;
|
||
|
||
ssl_certificate /etc/nginx/ssl/gitea.redpowerfuture.com.pem;
|
||
ssl_certificate_key /etc/nginx/ssl/gitea.redpowerfuture.com.key;
|
||
ssl_protocols TLSv1.2 TLSv1.3;
|
||
ssl_ciphers HIGH:!aNULL:!MD5;
|
||
|
||
location / {
|
||
if ($badbot) {
|
||
return 403;
|
||
}
|
||
|
||
proxy_pass http://__API_HOST__:3000;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
proxy_connect_timeout 75s;
|
||
proxy_send_timeout 86400s;
|
||
proxy_read_timeout 86400s;
|
||
}
|
||
}
|
||
|