# HTTP 服务器配置
server {
# 监听 80 端口,并将其设为默认服务器
listen 80 default_server;
listen [::]:80 default_server;
# 服务器名称,使用 _ 表示匹配任何未匹配到其他 server_name 的请求
server_name _;
# 将所有 HTTP 请求重定向到 HTTPS
location / {
return 301 https://$host$request_uri;
}
}
# HTTPS 服务器配置
server {
# 监听 443 端口,并启用 SSL
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
# 服务器名称,使用 _ 表示匹配任何未匹配到其他 server_name 的请求
server_name _;
# SSL 证书配置
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
# SSL 优化配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;
# 反向代理配置,将请求转发到内部的应用服务器
location / {
proxy_pass http://localhost:8080;
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;
# CORS (跨域资源共享) 头部配置
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT';
add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept, Authorization';
# OPTIONS 方法直接返回 200 状态码
if ($request_method = OPTIONS) {
return 200;
}
}
}
-
HTTP 服务器块:
listen 80 default_server;
和listen [::]:80 default_server;
: 监听 80 端口并设置为默认服务器。server_name _;
: 匹配所有未匹配到其他server_name
的请求。location / { return 301 https://$host$request_uri; }
: 将所有 HTTP 请求重定向到 HTTPS。$host
代表请求的主机名,$request_uri
代表请求的 URI。
-
HTTPS 服务器块:
listen 443 ssl default_server;
和listen [::]:443 ssl default_server;
: 监听 443 端口并启用 SSL。server_name _;
: 匹配所有未匹配到其他server_name
的请求。ssl_certificate
和ssl_certificate_key
: 配置 SSL 证书。ssl_protocols
和ssl_ciphers
: 优化 SSL 设置。location /
: 反向代理配置,将请求转发到内部应用服务器http://localhost:8080
。proxy_set_header
: 设置头部信息,以便正确转发客户端请求信息。- CORS 配置:
add_header 'Access-Control-Allow-Origin' '*';
: 允许所有来源的跨域请求。add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT';
: 允许的请求方法。add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept, Authorization';
: 允许的请求头部。if ($request_method = OPTIONS) { return 200; }
: 对于 OPTIONS 请求,直接返回 200 状态码。
- 如果需要基础的反爬虫可以加入以下配置
-
在server中加入
map $http_user_agent $blocked { default 0; ~*Spider 1; ~*Bot 1; ~*spider 1; ~*bot 1; }
-
在下方的location中加入
location / { if ($blocked) { return 403; } }
-