Nginx保留$ request_uri

时间:2018-12-19 21:48:19

标签: nginx nginx-location nginx-config

我不确定nginx是否实际上可以实现我想要的行为,但是可以。

我有一个运行在端口81上的服务器,具有以下nginx配置:

CONFIGURATION OF SERVER1 NGINX
server {
       listen 81;
       server_name SERVER_DNS_NAME;

       location /server1 {
                proxy_pass http://127.0.0.1:8084/;
                proxy_set_header Host $host;
       }

       location / {
                    proxy_pass http://127.0.0.1:8084;
                    proxy_set_header Host $host:$server_port;
                    }

       }

我在具有类似配置的端口82上运行了另一台服务器。现在我想做的是能够从80端口以不同的uri访问它们。

例如:URL / server1将带我到第一台服务器,URL / server2将带我到第二台服务器。

CONFIGURATION OF NGINX LISTENING ON PORT 80
server {
       listen SERVER_IP:80;
       location /server1{
                    proxy_set_header Host $host;
                    http://SERVER_IP:81;


                    }
        location /server2 {
                 proxy_pass http://SERVER_IP:82;
                 proxy_set_header Host $host;
        }

当我转到URL / server1时,此方法工作正常。我已成功路由到server1上的主页。但是,一旦我单击server1页面上存在的任何链接,我就会得到一个404。这是因为该站点尝试转到URL / some_subdir_of_server1(没有映射),而不是执行URL / server1 / some_subdir_of_server1。这种行为可行吗?如果可以,怎么办?

谢谢!

1 个答案:

答案 0 :(得分:0)

请注意斜杠:在您的示例中, proxy_pass http://SERVER_IP:81/;,它将代理URL设置为根/