nginx反向代理實例


通過一個例子演示一下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 / { # 只有一個/后面沒有路徑,表示訪問tomcat首頁 proxy_pass http://localhost:8080; 
# tomcat服務的路由 (因為我的nginx和tomcat部署在了同一台虛擬機,所以這里填的localhost,假如想代理其他服務器的服務,則填寫程序所在服務器ip端口即可)
} }

這樣,在訪問時,使用虛擬主機的ip+端口即可訪問  http://192.168.233.128:8089/

(2)在原有server基礎上添加一個location塊,如下:

 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端口)

 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服務器上的服務,結合/ApprPhd,表示訪問 http://192.168.0.XXX:30/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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM