这是问题所在:

主机具有在不同端口上运行的多个docker应用程序,例如. App1 @ 3001,App2 @ 3002 … 3100等

现在我想以这种格式访问http://hostname.com/app1,http://hostname.com/app2 ..

为此,我在主机上运行nginx,以根据子uri将请求代理到正确的端口

location = /app1 {
    proxy_redirect http://hostname:3001/;
    include /etc/nginx/proxy_params;
}

location ^~ /app1 {
    proxy_redirect http://hostname:3001/app1;
    include /etc/nginx/proxy_params;
}

但是,当网站的子uri更改或网站重定向时,这不起作用.
例如:

If I visit the site at hostname:3001 -> I can see the site
If I visit the site at http://hostname.com/app1 -> I can see the site
If the site page is at hostname:3001/static/index.html then when i access it as http://hostname.com/app1 the page changes to http://hostname.com/static/index.html -> I get 404.

有没有办法做到这一点?或者唯一的方法是将dns设置为app1.hostname.com并进行基于名称的路由?
最佳答案
你想要的服务器{}阻止内部:

location /app1 {
    rewrite ^/app1(.*) /$1 break;
    proxy_pass http://hostname:3001/;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location /app2 {
    rewrite ^/app2(.*) /$1 break;
    proxy_pass http://hostname:3002/;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

这里的重写规则将正确的uris传递给端口

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。