很简单,一个服务器只有一个ip,可想nginx占了80端口,tomcat项目要用带8080或者其他端口的来访问,在微信开发或者其他不想带端口的地方,怎么做?
做一下nginx的反向代理就可以了:
本文是在centos下面的nginx来配置:
加入你的tomcat 有一个项目叫做demo1,之前是通过http://xxx.com:8080/demo1来访问,如何改成用http://xxx.com/demo1来访问,接着看:
修改nginx的目录下的conf/nginx.conf中的server如下:
#下面是server虚拟主机的配置
server
{
listen 80;#监听端口
server_name localhost;#域名
index index.html index.htm index.php;
root /usr/local/webserver/nginx/html;#站点目录
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
{
expires 30d;
# access_log off;
}
location ~ .*\.(js|css)?$
{
expires 15d;
# access_log off;
}
access_log off;
#下面都是自定义的反向代理
location /demo1{
proxy_pass http://h500.cn:8080/demo1;#主要是这里,配置java web项目的端口和项目名
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 100m;
root html;
index index.html index.htm;
}
}
重启nginx生效: /usr/nginx/sbin/nginx -s reload
注意:我后来测试,想把8080端口的整个tomcat的请求都去掉端口号,做法:
location ^~ /tomcat/{
proxy_pass http://127.0.0.1:8080/;#主要是这里,配置 http://127.0.0.1/tomcat 所要访问的真实地址
proxy_set_header Host $host/tomcat; #特别注意此处,要加上/tomcat,否则,http://127.0.0.1/tomcat 是对了,后面再跳转就不带/tomcat 而报错.
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
这样的话,以前,http://ip:8080来访问tomcat的,全部都可以去掉8080端口,直接使用:http://ip/tomcat来访问
参考:http://blog.csdn.net/juan0728juan/article/details/53019997#
http://blog.csdn.net/qq_28877125/article/details/67089408