原文链接:https://www.cnblogs.com/hanmk/p/9289069.html
下面演示一下nginx是如何代理服务的,并讲下 nginx.conf 文件中的关于server模块和location模块的配置。
server模块:配置虚拟主机的相关参数,一个http中可以有多个server;
location模块:配置请求的路由,以及各种页面的处理情况;
首先我在本地虚拟机安装了nginx和tomcat,启动后,可使用虚拟机 ip 地址访问tomcat。虚拟机ip:http://192.168.233.128。tomcat监听的端口是:8080。
1、通过 nginx 代理 tomcat 服务,使用 nginx 配置的虚拟主机地址来访问
(1)增加一个 server 块,并在其中添加一个location快,如下:
server { listen 8089; server_name localhost; # location / { # root html; # index index.html index.htm; # } # 注意:要把原来的根路径的location注释掉,这个页面是跳转到nginx的首页; # 因为不允许出现2个一样的location路径,否则会报错“nginx: [emerg] duplicate location "/" in /usr/local/nginx/conf/nginx.conf:63” location / { # 只有一个/,后面没有路径,表示访问tomcat首页 proxy_pass http://localhost:8080; # tomcat服务的路由。nginx和tomcat部署在同一台虚拟机,所以是localhost。想代理其他服务器的服务,填写程序所在服务器ip:端口即可) } }
使用虚拟主机的ip+端口http://192.168.233.128:8089/,即可访问
2、在tomcat上部署jenkins.war,通过nginx反向代理来访问
正常访问jenkins是:http://192.168.233.128:8080/jenkins
通过nginx代理,不加端口访问,只需在监听80端口的server块中添加一个location块
location /jenkins { # /jenkins表示要访问的路由下的路径 proxy_pass http://127.0.0.1:8080; # 请求转向本虚拟机的8080端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; #获取真实ip proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 获取代理者的真实ip proxy_redirect off; }
配置完成后重启nginx,使用http://192.168.233.128/jenkins进行访问即可
3.代理部署在另一台服务器的程序,通过nginx所在服务器访问其服务
在监听80端口的server块中添加一个location块
location /ApprPhD { # 访问程序时需要在ip后添加的路径 proxy_pass http://192.168.0.XXX:30; # 请求转向XXX服务器上的服务 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; #获取真实ip proxy_set_header REMOTE-HOST $remote_addr; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#获取代理者的真实ip proxy_redirect off; }
重启nginx服务后,使用如下链接访问:http://192.168.233.128/ApprPhD