Nginx 反向代理

2025-08-22 18:13:00
丁国栋
原创 80
摘要:本文记录 Nginx 在反向代理方面的一些常见配置和常见问题。

这一个非常典型和通用的 Nginx 代理配置:


    location / {
        proxy_redirect off;
        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_pass_request_headers on;
        proxy_pass http://127.0.0.1:8080;
    }

其中:


  • Host 主机头是为了让后端服务能正确处理该请求,根据 Host 来判断应该路由给哪一个虚拟主机或者服务。
  • X-Real-IP 和 X-Forwarded-For 的目的是一样的,都是为了让后端服务获取真实的IP地址。
  • X-Forwarded-Proto 则是为了让后端服务识别到用户使用的协议,是 HTTPS 还是 HTTP。值得注意的是目前市面上还有不少服务会根据这个主机头判断请求是否合法,例如 HTTP Referer 和 X-Forwarded-Proto 的协议以及Host如果不一致会中断请求或者拒绝服务,在一定程度上可以抵御部分 CSRF 攻击(Cross-Site Request Forgery “跨站请求伪造”)。


完整示例:

upstream jumpserver
{
    server 127.0.0.1:8080;
}
server {
    listen 80;
    server_name  jms.thedf.cc;
    return 301 https://jms.thedf.cc$request_uri;
}
server {
    listen 443 ssl;
    server_name  jms.thedf.cc;
    ssl_certificate /root/.acme.sh/thedf.cc_ecc/fullchain.cer;
    ssl_certificate_key /root/.acme.sh/thedf.cc_ecc/thedf.cc.key;
    charset utf-8;
    access_log /var/log/nginx/access-jms.thedf.cc.log;
    error_log  /var/log/nginx/error-jms.thedf.cc.log;
    location /
    {
        proxy_pass http://jumpserver;
        proxy_redirect             off;
        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_set_header           Upgrade $http_upgrade;
        proxy_set_header           Connection "upgrade";
        client_max_body_size       0;
        client_body_buffer_size    128k;
        proxy_connect_timeout      300;
        proxy_send_timeout         300;
        proxy_read_timeout         300;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
    }
}

--


发表评论
博客分类