如何使用NGINX反向代理,以及代理上游URL的端口和路径?

时间:2019-04-01 00:03:30

标签: nginx reverse-proxy

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

启用了我的网站/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文件中的变量传递端口和路径?

3 个答案:

答案 0 :(得分:2)

经过大量的调试和配置,我终于可以正常工作了。

=VLOOKUP(C1&"*",A:A,1,FALSE)

是正确的,但是我错过了

=INDEX($A:$A,AGGREGATE(15,7,ROW($A$1:$A$3)/(ISNUMBER(SEARCH($C1,$A$1:$A$3))),COLUMN(A:A))) 指令,该指令允许NGINX服务器在特定端口上侦听,默认情况下,它在端口80上侦听。但是,端口80不是我想要传递给上游服务器的端口。

答案 1 :(得分:0)

也许有人会觉得它有用,但是有一个在线实用程序,您可以在其中生成nginx配置。非常用户友好

您可以找到它here

答案 2 :(得分:0)

另一种方法(下面的示例配置)

upstream myserver {
    server ip-address:port;
}

server {
  listen 80;      //IPv4
  listen [::]:80; //IPv6
  location / {
    proxy_pass http://myserver /;
    proxy_set_header Host $http_host;
    ...rest of your headers...
  }
}