cchen521 2025-06-11 10:57 采纳率: 50%
浏览 5
已结题

Nginx反代配置求

Nginx反向代理配置问题

内网地址 http://192.168.66.61:9999/hlgg/
外网代理地址 https://yy.com/hlgg/

server {
            listen 80;
            listen 443 ssl;  # 1.1版本后这样写
        server_name yy.com; #填写绑定证书的域名
        ssl_certificate yy.com.crt;  # 指定证书的位置,绝对路径
        ssl_certificate_key yy.com.key;  # 绝对路径,同上
location /hlgl/ {

                proxy_pass http://192.168.30.6:9999/;   
                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 Upgrade $http_upgrade;
                                proxy_set_header Connection "upgrade";
            client_max_body_size 50m;
            client_body_buffer_size 256k;
            proxy_connect_timeout 600;
            proxy_send_timeout 300;
            proxy_read_timeout 1200;
            proxy_buffer_size 256k;
            proxy_buffers 4 256k;
            proxy_busy_buffers_size 256k;
            proxy_temp_file_write_size 256k;
            proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
            proxy_max_temp_file_size 20m; 
            }


这样配置后,点击登录时返回
https://yy.com/api/system/user/login
但是配置二级域名的方式,可以正常。

请问需要修改配置?在192.168.30.6上修改nginx配置,还是在web服务器上修改nginx配置?

刚刚按照三位师傅的配置,都是不行。

  • 写回答

6条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-06-11 11:15
    关注

    让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供。

    如果还有疑问可以点击头像关注私信或评论。如果答案让您满意,请采纳、点赞、关注,非常感谢!

    根据你的描述,问题出在反向代理配置中的路径处理上。当前配置会导致API请求被错误地转发到根路径而不是后端服务的正确路径。以下是解决方案:

    需要修改的地方

    1. Nginx反向代理配置问题
      • 当前location /hlgl/与后端服务路径/hlgg/不匹配(hlgl vs hlgg
      • proxy_pass缺少了后端服务的上下文路径
    1. 解决方案(修改外网Nginx配置):
    server {
        listen 80;
        listen 443 ssl;
        server_name yy.com;
        
        ssl_certificate yy.com.crt;
        ssl_certificate_key yy.com.key;
    
    
        location /hlgg/ {
            proxy_pass http://192.168.66.61:9999/hlgg/;  # 注意这里要加上/hlgg/
            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 Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            
            # 其他原有配置保持不变...
        }
    
    
        # 添加API路径的代理
        location /api/ {
            proxy_pass http://192.168.66.61:9999/api/;
            # 保持相同的header设置
            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 Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    }
    

    修改说明

    用户访问 https://yy.com/hlgg/

    关键点

    1. 路径一致性
      • 确保前端访问路径(/hlgg/)与后端服务路径一致
      • proxy_pass中需要包含完整的后端服务路径
    1. API路径处理
      • 添加单独的/api/ location块来处理API请求
      • 这样登录请求/api/system/user/login会被正确转发
    1. 修改位置
      • 只需要修改外网Nginx的配置
      • 不需要修改内网服务器的配置(除非内网服务本身有路径问题)
    1. 测试建议
      • 修改后执行nginx -t测试配置
      • 然后nginx -s reload重载配置
      • 使用浏览器开发者工具检查网络请求是否正确转发

    如果后端服务本身有路径前缀(如/hlgg/api/...),则需要相应调整proxy_pass的路径。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 6月19日
  • 已采纳回答 6月11日
  • 修改了问题 6月11日
  • 创建了问题 6月11日