nginx转发请求给tomcat,因为某些原因,tomcat要保留ContextPath,也就是说,访问tomcat的时候是http://localhost:8080/Context32/。但是又不想在浏览器里体现出来,所以想到用nginx转发。但是不随人愿,配置成下面状态时,注意加粗和下划线的部分,打开后,如果用permanent,浏览器地址是正确的,但是无法post数据到tomcat,如果用last或者不加参数,浏览器地址不对,但是可以post数据到tomcat,怎么调整都没有达成二者都实现的方法,请教高手!server {
listen 80;
server_name abcd.com *.abcd.com;
root /cdata/www/nginxwww/;
index index.php index.html index.htm;#rewrite ^/Context32/(.*) /$1 permanent;
#rewrite ^/Context32 / permanent;location / {
proxy_pass http://localhost:8080/Context32/;
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;
client_max_body_size 50m;
client_body_buffer_size 256k;
proxy_connect_timeout 30;
proxy_send_timeout 30;
proxy_read_timeout 60;
proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
listen 80;
server_name abcd.com *.abcd.com;
root /cdata/www/nginxwww/;
index index.php index.html index.htm;#rewrite ^/Context32/(.*) /$1 permanent;
#rewrite ^/Context32 / permanent;location / {
proxy_pass http://localhost:8080/Context32/;
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;
client_max_body_size 50m;
client_body_buffer_size 256k;
proxy_connect_timeout 30;
proxy_send_timeout 30;
proxy_read_timeout 60;
proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
解决方案 »
- 求助:关于控制节点虚拟ip
- 刚接触crowbar和openstack,感觉一片混乱,求前辈指点
- nova boot cirros image 时出现实例成功启动但系统未完成安装情况
- CloudFoundry中EventMachine的初步学习
- 大家都说云服务,到底云服务是什么?
- hdfs上传文件出现Call to localhost/127.0.0.1:9000 failed on local exception
- spark vector 和 breeze自带的vector
- t2.large的机器访问本机的apache速度都特别慢
- 刚开始玩docker,配置docker-compose 报错,请大牛驻足看下,能帮忙解决下吧!
- spark参与计算的Excutor和实际申请的excutor不相等
- 求教spark graphx最短路径的问题
- pig可以安装在hadoop集群外吗?
建议解决办法:
核心思想:contextPath得为/。
1.Tomcat均在ROOT下部署
2..修改Jsp中的contextPath为绝对路径或者/。
实际上,方案2是最好的办法。因为这样可以跟contextPath完全解耦了,便于动静分离。文件改多一点就辛苦一下吧。
3.有人专门针对于此,编写了相应的模块,可以一试。
https://github.com/tszming/nginx-rewrite-request-body-module
if ($request_method != POST) {
rewrite /xxx (.*)$ $1 permanent;
}
因为post请求一般不会影响地址栏。
这样,就能满足地址栏优雅,且POST数据传递正常。不过,这种情况主要用于快速解决遗留问题。如果是新规划系统,还是建议使用方案2。
替换了信的war包之后,之前版本的工程会自动删除掉,,请问下怎样发布工程才可以保留之前工程里面上传文件夹里的东西??