Nginx反向代理URL重写

5

我有一个监听端口为80的nginx和一个监听端口为8080的tomcat,作为上游服务器。

在tomcat中,war应用程序监听/pwm路径。

我想将nginx配置为tomcat的反向代理,并将url“/”重写为“/pwm”。

例如:用户在浏览器中输入“web.noc.local”,nginx会将url重写为“web.noc.local/pwm”,并重定向到监听8080端口的tomcat。

我的nginx配置:

upstream pwm_server  {
    server 127.0.0.1:8080 fail_timeout=0;
}

server {
    listen       80;
    server_name  web.noc.local;     
    access_log  /var/log/nginx/log/web.noc.local.access.log  main;
    error_log  /var/log/nginx/log/web.noc.local.error.log;      
    location / {
        if ($is_args != "") {  
            rewrite "^$" /pwm  break;
            expires     7d;
            proxy_pass http://pwm_server; 
        }           
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;    
        proxy_max_temp_file_size 0;     
        proxy_buffering off;
        proxy_connect_timeout 30;
        proxy_send_timeout 30;
        proxy_read_timeout 30;
        proxy_pass http://pwm_server;
    }
}

现在当我打开这个url时,什么都没有发生,只有一个空白的屏幕。
谢谢帮助。
1个回答

4

好的,我找到了对我有效的解决方案:

location / {
    rewrite ^ http://web.noc.local/pwm/ last;
}

location /pwm {

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;

    proxy_max_temp_file_size 0;     
    proxy_buffering off;
    proxy_connect_timeout 30;
    proxy_send_timeout 30;
    proxy_read_timeout 30;
    proxy_pass http://pwm_server;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接