首页 > 解决方案 > 如何使用 NGINX 反向代理,并将端口和路径代理到上游 url?

问题描述

我已经按照此处的说明设置了 nginx 反向代理:https ://medium.com/@mightywomble/how-to-set-up-nginx-reverse-proxy-with-lets-encrypt-8ef3fd6b79e5

我的 sites-enabled/mysite.conf 看起来像

server {      
 server_name mynginxreverseproxy.com; 
 set $upstream serverip:$server_port/; 
 location / {  
    proxy_pass_header Authorization;  
    proxy_pass http://$upstream;  
    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_http_version 1.1;  
    proxy_set_header Connection “”;  
    proxy_buffering off;  
    client_max_body_size 0;  
    proxy_read_timeout 36000s;  
    proxy_redirect off;  }

    listen 443 ssl; # paths to ssl cert files

} server {
    if ($host = mynginxreverseproxy.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


 server_name mynginxreverseproxy.com; listen 80;
    return 404; 

}

我想将端口和路径转发到我的服务器,例如 https://mynginxreverseproxy.com:portnumber/myurl -> 到 serverip:com:portnumber/myurl。我已经能够为单个端口工作,该端口可以将端口 80 转发到我想要的端口,但是如何扩展它以适用于许多端口?

我有许多要设置的端口映射,因此最好使用变量来执行此操作,而不是对每个端口映射进行硬编码。

如何通过使用 conf 文件中的变量来传递端口和路径?

标签: nginxreverse-proxy

解决方案


经过大量调试和配置后,我最终得到了这个工作。

set $upstream serverip:$server_port

是正确的,但我错过了

listen允许 NGINX 服务器监听特定端口的指令,它默认监听端口 80。但是,端口 80 并不是我想要传递到上游服务器的端口。


推荐阅读