Files
orbit/deploy/nginx/orbit.conf.example

123 lines
4.0 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Orbit HTTPS/WSS 入口示例。
# 将 orbit.example.com 和证书路径替换成正式值后,放到 Nginx 的 conf.d 目录。
# 本文件位于 http 配置上下文中;map/limit_req_zone 不能放进 server 块。
map $http_upgrade $orbit_connection_upgrade {
default upgrade;
'' close;
}
limit_req_zone $binary_remote_addr zone=orbit_console_login:10m rate=10r/m;
upstream orbit_backend {
server 127.0.0.1:8080;
keepalive 64;
}
server {
listen 80;
listen [::]:80;
server_name orbit.example.com;
# ACME HTTP-01 或其他证书签发工具可使用此目录。
location ^~ /.well-known/acme-challenge/ {
root /var/www/orbit-acme;
default_type text/plain;
}
location / {
return 308 https://$host$request_uri;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name orbit.example.com;
ssl_certificate /etc/letsencrypt/live/orbit.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/orbit.example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_session_cache shared:orbit_tls:10m;
ssl_session_timeout 10m;
ssl_session_tickets off;
client_max_body_size 1m;
proxy_connect_timeout 5s;
proxy_send_timeout 60s;
add_header Strict-Transport-Security "max-age=31536000" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer" always;
# 长连接只用于 Worker 和结果订阅;心跳由协议负责,代理不能自行关闭空闲会话。
location = /v1/worker/connect {
proxy_pass http://orbit_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $orbit_connection_upgrade;
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-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 1h;
proxy_buffering off;
}
location = /v1/events/connect {
proxy_pass http://orbit_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $orbit_connection_upgrade;
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-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 1h;
proxy_buffering off;
}
# 控制台登录额外限制来源 IP 的尝试速率;业务任务速率仍由 Orbit 的持久化配额和授权决定。
location = /console/auth/login {
limit_req zone=orbit_console_login burst=5 nodelay;
proxy_pass http://orbit_backend;
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-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 30s;
}
location = /health/live {
access_log off;
proxy_pass http://orbit_backend;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 5s;
}
location = /health/ready {
access_log off;
proxy_pass http://orbit_backend;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 5s;
}
location / {
proxy_pass http://orbit_backend;
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-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 60s;
}
}