經過一個例子演示一下nginx是如何代理服務的,而且講一下nginx.conf的關於server模塊和location模塊的配置html
server模塊:配置虛擬主機的相關參數,一個http中能夠有多個servernginx
location模塊:配置請求的路由,以及各類頁面的處理狀況tomcat
首先我在本地虛擬機安裝了nginx和tomcat,啓動後,此時可使用虛擬機ip地址訪問tomcat服務器
虛擬機ip是:http://192.168.233.128spa
tomcat監聽的端口是:8080代理
(1)增長一個server 塊,並在其中添加一個location快,以下code
server { listen 8089; server_name localhost; location / { # 只有一個/後面沒有路徑,表示訪問tomcat首頁 proxy_pass http://localhost:8080;
# tomcat服務的路由 (由於個人nginx和tomcat部署在了同一臺虛擬機,因此這裏填的localhost,假如想代理其餘服務器的服務,則填寫程序所在服務器ip端口便可) } }
這樣,在訪問時,使用虛擬主機的ip+端口便可訪問 http://192.168.233.128:8089/server
(2)在原有server基礎上添加一個location塊,以下:htm
server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; # location / { #注意:把原來的根路徑的location註釋掉了,這個頁面是跳轉到nginx的首頁,由於不容許出現2個同樣的location路徑,不然會報錯「nginx: [emerg] duplicate location "/" in /usr/local/nginx/conf/nginx.conf:63」 # root html; # index index.html index.htm; #} location / { # 根路徑 proxy_pass http://localhost:8080; # 請求轉向本虛擬機的8080端口(即訪問tomcat)
}
此次,直接使用虛擬機的ip便可訪問tomcat首頁:http://192.168.233.128(不須要加端口,由於是80端口)blog
正常訪問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進行訪問便可
在監聽80端口的server塊中添加一個location塊
location /ApprPhD { # 訪問程序時須要在ip後添加的路徑 proxy_pass http://192.168.0.XXX:3030; # 請求轉向XXX服務器上的服務,結合/ApprPhd,表示訪問 http://192.168.0.107:3030/ApprPhD 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