nginx实现反向代理,以反向代理tomcat为例
我的nginx和tomcat在同一台服务器上
我nginx安装的位置(因为我安装时使用的是./configure --prefix=/usr/etc/nginx)是/usr/etc/nginx,进入安装该文件夹
编辑conf文件夹下的nginx.conf,在末尾增加
location ~ \.jsp$ {
index index.jsp;
proxy_pass http://localhost:8080; #这条语句是关键,把所有jsp页面的请求跳转到localhost:8080交给tomcat处理,把localhost换成其它ip也可以
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 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 6 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
location ~ \.(html|js|css|gif|jpg|png|bmp|swf)$ { #这里也需要注意一下,这里把html等静态文件定位到tomcat的网站目录下,所以访问80端口提示找不到页面,所以我们可以在这个tomcat目录下新建一个html文件,然后再访问80端口,就会显示新建立的文件了
expires 30d;
root /usr/local/tomcat/webapps/ROOT;
}
看一下我反向代理设置,以下代码配置在nginx.conf中,放在http{}里面就行了
server { listen 8000; #随便设置一个未被占用的端口,建议端口号大于1024 location / { proxy_pass http://172.16.1.110:8080; #代理哪个就写哪个,我这里是反向代理到172.16.1.110:8080上,在这台服务器上我已经安装好了tomcat,默认端口为8080,http://貌似不能省略 index index.jsp index.html index.htm; #最好也写一下这个,这个是默认主页的文件名 } }
我的nginx服务器是172.16.1.54,现在我们从8000端口访问,I'm 110是172.16.1.110tomcat的默认页内容