如何使用带有URI的nginx proxy_pass?

时间:2013-06-01 15:37:39

标签: server-side

我的目标是使用ngnix将一个域重定向到另一个域:

http://abc.mydomain1.com - > http://mydomain2.com:8080/test1

我尝试了以下内容:

 server {
      listen   80;
      server_name  abc.mydomain1.com;
      access_log off;
      location / {
           proxy_pass http://mydomain2.com:8080/test1/;
           proxy_set_header    Host            $host;
           proxy_set_header    X-Real-IP       $remote_addr;
           proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
           port_in_redirect off;
           proxy_connect_timeout 300;
      }
     # redirect server error pages to the static page /50x.html
 #
 error_page   500 502 503 504  /50x.html;
 location = /50x.html {
  root   /usr/share/nginx/html;
 } }    

它适用于第一页index.html但是这个页面需要加载javascripts和css资源并查看源代码我注意到所有链接都是这样生成的:

<link rel="stylesheet" href="/test1/css/bootstrap.min.css"/>

如何避免contextPath“test1”?我认为标题中缺少一些东西,但我不知道:(

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我认为我的方法不正确,因为服务器http://mydomain2.com:8080/test1/将在本例“test1”中生成基于上下文的链接。因此ngnix运作良好。

我解决了在http://mydomain2.com:8080为“test1”创建虚拟主机的问题

 <Host name="abc.mydomain1.com"  appBase="abc.mydomain1.com"
        unpackWARs="true" autoDeploy="true"></Host>

我将重定向更改为(删除test1):

server {
  listen   80;
  server_name  abc.mydomain1.com;
  access_log off;
  location / {
       proxy_pass http://mydomain2.com:8080/;
       proxy_set_header    Host            $host;
       proxy_set_header    X-Real-IP       $remote_addr;
       proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
       port_in_redirect off;
       proxy_connect_timeout 300;
  }
 # redirect server error pages to the static page /50x.html
 #
 error_page   500 502 503 504  /50x.html;
 location = /50x.html {
 root   /usr/share/nginx/html;
 } }