开发机器url并不反映url中的“dev”部分

我有两台机器,它们由一台主机提供服务。 主机定义了第一台机器10.10.0.59

 server { listen 80; client_max_body_size 200M; server_name localhost 127.0.0.1; server_name_in_redirect off; location / { proxy_pass http://10.10.0.59; proxy_redirect default; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location ^~ /dev/ { proxy_pass http://10.10.0.56; proxy_redirect default; proxy_set_header Host $http_host; rewrite /dev/(.*) /$1 break; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 

dev机器是10.19.9.56 ,我需要(很有可能) /dev/到URLpath,以便我可以浏览它通过http://public_domain/dev/.....

每台机器都有几个应用程序在运行。

有了这个新的规则,我可以继续http://public_domain/dev/app1/但该页面上的所有链接将指向,例如, http://public_domain/app1/login这是服务器#1。

还有什么不对? 谢谢。

我应该设置一个新的服务器条款吗? 如果我这样做,我需要打开一个不同的端口,因为这两个location块在同一个服务器子句中,并在80上侦听。

谢谢。

这个问题是跟随你的proxy_pass指令。 这就告诉proxy_pass用所提供的path(/)replace与位置(/ dev)匹配的url部分。 它不会影响你的位置/因为它正在取代/与/。 如果你只是用你的当前行代替

 proxy_pass http://10.10.0.59; 

然后在将它传递到后端之前不会处理这个url。

更新 :我的回答是错误的。 但是,我要把它留在这里,这样任何看到这个的人都不会犯我的错!

location /块应该可能是任何server的最后一个块。 在你的configuration中,它是第一个。 这可能是你描述的问题的原因。 所以,请尝试以下…

服务器{
         server_name localhost 127.0.0.1;
         server_name_in_redirect off;

        位置/ dev {
                 proxy_pass http://10.10.0.59/;
                     .........
         }

        位置 / {
                 proxy_pass http://10.10.0.56/;
                      ........