小编Mit*_*ent的帖子

根据 url 将流量重定向到不同的 ip 地址,维护端口和 url 信息

我们有 QA 版本、UAT 版本和 webapp 的 DEV 版本。用户需要通过访问这些http://uat.company.com:41002/webapphttp://qa.company.com:41002/webapphttp://dev.company.com:41002/webapp。在端口 41001 和端口 8080 上还有一个不同的 webapp,它们需要访问。

这些 url 必须在公司外部可用,而且我们只有一个可以访问它们的公共 IP 地址。因此,DNS 记录需要所有 3 个地址指向一个 IP。在那个单一的 IP 地址上,有一台服务器运行着 nginx。在后台,我需要每个 url 指向不同的服务器

http://uat.company.com --> 123.123.123.1
http://qa.company.com  --> 123.123.123.2
http://dev.company.com --> 123.123.123.3
Run Code Online (Sandbox Code Playgroud)

恐怕我不知道正确的术语,但是 URI 的其余部分和端口也必须转移到 IP 地址。即如果有人访问

http://uat.company.com:41002/webapp/somepage`
Run Code Online (Sandbox Code Playgroud)

看起来好像那是他们访问过的页面,但实际上他们会查看

http://123.123.123.1:41002/webapp/somepage
Run Code Online (Sandbox Code Playgroud)

或者如果他们访问过

http://qa.company.com:8080/static/home.html
Run Code Online (Sandbox Code Playgroud)

他们真的会看

http://123.123.123.2:8080/static/home.html
Run Code Online (Sandbox Code Playgroud)

但他们的浏览器仍然会说 http://qa.company.com:8080/static/home.html

我试过了

server {

    server_name uat.company.com;

    listen 41001;
    listen 41002;
    listen 8080;

    location / {
            proxy_pass http://123.123.123.1:$server_port$uri;
            proxy_set_header Host $host;
    }
Run Code Online (Sandbox Code Playgroud)

}

但是,这给了我一个带有日志的错误网关 502 页面: …

rewrite nginx proxy proxypass

6
推荐指数
2
解决办法
3万
查看次数

标签 统计

nginx ×1

proxy ×1

proxypass ×1

rewrite ×1