Nginx 反向代理設置

背景:

1.美國團隊開發的web程序部署在一臺服務器上,老舊的GlassFish2.x,還是Windows,以下稱App1。

2.我們新開發的web程序部署在另一臺服務器上,Ubuntu 12.04 server,新版本的GlassFish3.x,以下稱App2。

問題:

要想辦法把這兩個程序僞裝成一個站點,這樣可以解決兩個問題:

1.認證問題,瀏覽器先從App1登陸,保存cookie。然後再訪問App2的時候,會將cookie發過來,App2通過解析cookie內的token,來進行用戶身份認證,如果無token,或者無cookie,自動轉向App1要求登陸。否則拿到token後,通過server端調用App1的驗證API來檢查該用戶session是否過期。

2.同時支持HTTP/HTTPS,因爲登陸等敏感請求需要加密。


來一張圖,對理解我的話比較有幫助:



如何配置呢,將配置寫在一個獨立的conf文件裏面,包括兩部分,一部分配置HTTP.

  1. server {  
  2.     listen       80;  
  3.     server_name  192.168.1.10;  
  4.   
  5.     access_log /opt/agol_http.log my_log;  
  6.   
  7.     location ^~ /home {  
  8.         proxy_pass http://192.168.1.11;  
  9.         proxy_set_header Host $host;  
  10.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  11.     }  
  12.   
  13.     location ^~ /sharing {  
  14.         proxy_pass http://192.168.1.11;  
  15.         proxy_set_header Host $host;  
  16.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  17.     }  
  18.   
  19.     location /geoflow {  
  20.         proxy_pass http://192.168.1.10:8081/flow;  
  21.         proxy_set_header Host $host;  
  22.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  23.     } 

HTTPS也單獨配置一個Server

  1. # HTTPS server                                                                                                                                                                     
  2. server {  
  3.     listen       443 ssl;  
  4.     ssl_certificate      /usr/nginx/conf/server.crt;  
  5.     ssl_certificate_key  /usr/nginx/conf/server.key;  
  6.     server_name  10.112.18.178;  
  7.     access_log /opt/agol_https.log my_log;  
  8.   
  9.     location / {  
  10.         proxy_pass https://192.168.1.11;  
  11.         proxy_set_header Host $host;  
  12.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  13.     }  
  14. }  
這樣Nginx看到如果是HTTPS請求,全部轉向App1。如果是HTTP請求,則要看URL,根據不同的location,決定轉向不同的應用。這個具體情況靈活配置了。


最後在nginx.conf的http設置裏面加上

include agol.conf;

即可。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章