开发机器 URL 未反映 URL 中的“dev”部分

开发机器 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;
}

机器dev10.19.9.56,我需要添加(最有可能)/dev/到 url 路径,以便我可以通过http://public_domain/dev/.....

每台机器都运行着多个应用程序。

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

还有什么问题?谢谢。

我应该设置一个新的服务器子句吗?如果这样做,我是否需要打开不同的端口,因为这两个location块位于同一个服务器子句内并监听 80。

谢谢。

答案1

问题是您的代理密码指令。这告诉 proxy_pass 将与位置 (/dev) 匹配的 URL 部分替换为提供的路径 (/)。它不会影响您的位置 /,因为它将 / 替换为 /。如果您只是将当前行替换为

proxy_pass http://10.10.0.59;

那么它在将其传递给后端之前不会处理该 url。

答案2

更新:我的答案是错误的。但是,我把它留在这里,这样看到的人就不会犯我的错误!

location /block 可能应该是任何的最后一个块server。在您的配置中,它位于最前面。这可能是您所描述的问题的原因。因此,请尝试以下操作...

服务器 {
        服务器名称本地主机 127.0.0.1;
        服务器名称_in_redirect 关闭;

        位置/dev {
                代理密码 http://10.10.0.59/;
                    .........
        }

        地点 / {
                代理密码 http://10.10.0.56/;
                     ........

相关内容