Nginx 代理 Tomcat 问题 request.getRequestURI(); 怎么让他不带项目名
如果
nginx
下面这样的配置
我访问
http://kaipizhe.com
这个时候
request.getRequestURI();
这个值是
/kaipizhe/
而不是
/
我访问
http://kaipizhe.com/all/
这个时候
request.getRequestURI();
这个值是
/kaipizhe/all/
而不是
/all/
就是
request.getRequestURI();
都会带上
/kaipizhe/
,怎么让他直接是
/
,
是不是我
nginx
配置有问题,应该怎么处理
nginx
log_format kaipizhe.com '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; server { listen 80; server_name kaipizhe.com; root /usr/local/tomcat/webapps/kaipizhe; include none.conf; location / { proxy_pass http://localhost:8080/kaipizhe/; proxy_cookie_path /kaipizhe /; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect http://localhost:8080/kaipizhe/ http://kaipizhe.com/; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } access_log /home/wwwlogs/kaipizhe.com.log kaipizhe.com; }
右代宫真理亚
9 years, 12 months ago
Answers
建议修改tomcat的配置,为你项目配置虚拟主机,把项目的根目录设置为 /usr/local/tomcat/webapps/kaipizhe (或者你项目实际的根目录),这样你访问就不需要加一个 /kaipizhe 前缀了,自然 request.getRequestURI() 获取的结果也是你想要的。
如果你采用了上述的访问,记得还是要修改一下 nginx 的配置,应该这样就可以了。
location / {
proxy_pass http://localhost:8080/;
proxy_cookie_path / /;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect http://localhost:8080/ http://kaipizhe.com/;
}
満艦飾光頭
answered 9 years, 12 months ago