前言 :
在 Nginx 的 proxy 代理上可分為正向代理和反向代理。今天主要說明,反向代理且轉發到 Tomcat 的設定方式。
Nginx 反向代理(Reverse Proxy), 當代理服務器 Nginx 接收到 internet 的連線請求時,會將此請求轉發到內部指定的服務器上。並從內部服務器上取得資料後返回到代理服務器,最後在由代理服務器傳送資料給 internet 上的用戶端。
安裝環境 :
Centos 5.8
Nginx 1.2.5
PHP 5.4.9
MySQL 5.5.28
Tomcat 6.0.36
JDK 6.37
設定方式 :
轉發設定上,今天就來介紹一下 Nginx 80 → Tomcat 8080和 Nginx 443 → Tomcat 443
Nginx 80 → Tomcat 8080
修改 Nginx.conf 設定
在安裝好 Nginx 和 Tomcat 後,來修改 Nginx.conf 的設定。找到server{}裡面的location來做修改。如果 server{} 內沒有設定 location 的話請自行添加
修改前
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[root@localhost ~]# vim /usr/local/webserver/nginx/conf/nginx.conf server { listen 80; server_name localhost; root /usr/local/webserver/nginx/html; index index.html index.htm index.php; location ~\.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/webserver/nginx/html$fastcgi_script_name; include /usr/local/webserver/nginx/conf/fastcgi.conf; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } |
修改後
主要是在location {} 內添加
proxy_pass http://IP或domain:8080;
proxy_set_header Host $host:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
[root@localhost ~]# vim /usr/local/webserver/nginx/conf/nginx.conf server { listen 80; server_name localhost; root /usr/local/webserver/nginx/html; index index.html index.htm index.php; location / { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/webserver/nginx/html$fastcgi_script_name; include /usr/local/webserver/nginx/conf/fastcgi.conf; proxy_pass http://114.43.91.238:8080; proxy_set_header Host $host:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } |
重啟 Nginx 服務
測試
如果有做過修改的話可用以下指定測試修改後是否有問題
1 2 3 4 |
[root@localhost ~]# /usr/local/webserver/nginx/sbin/nginx -t #如果測試後結果如下 就表示修改沒問題 nginx: the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/webserver/nginx/conf/nginx.conf test is successful |
reload
在不停止Nginx服務情況下,重啟Nginx
1 |
[root@localhost ~]# /usr/local/webserver/nginx/sbin/nginx -s reload |
開啟和停止
1 2 3 |
[root@localhost ~]# ulimit -SHn 65535 [root@localhost ~]# /usr/local/webserver/nginx/sbin/nginx #開啟 [root@localhost ~]# /usr/local/webserver/nginx/sbin/nginx -s stop #停止 |
開網頁測試
在網址的地方輸入「http://ip或domain」。應該看到的頁面會從原先的「Welcome to nginx !」變成 Apache Tomcat的頁面。如此就設定完成了。
Nginx 443 → Tomcat 443
在開始跳轉設定之前,請先把 Nginx 和 Tomcat 的443port 連線設定好包括KEY的部份。
修改 Nginx.conf 設定
修改前
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[root@localhost ~]# vim /usr/local/webserver/nginx/conf/nginx.conf server { listen 443; server_name localhost; ssl on; root /usr/local/webserver/nginx/html; index index.html index.htm index.php; location ~\.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/webserver/nginx/html$fastcgi_script_name; include /usr/local/webserver/nginx/conf/fastcgi.conf; } } |
修改後
主要是在location {} 內添加
proxy_pass https://IP或domain:443;
proxy_set_header Host $host:443;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[root@localhost ~]# vim /usr/local/webserver/nginx/conf/nginx.conf server { listen 443; server_name localhost; ssl on; root /usr/local/webserver/nginx/html; index index.html index.htm index.php; location / { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/webserver/nginx/html$fastcgi_script_name; include /usr/local/webserver/nginx/conf/fastcgi.conf; proxy_pass https://114.43.91.238:443; proxy_set_header Host $host:443; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } |
重啟 Nginx 服務
測試
如果有做過修改的話可用以下指定測試修改後是否有問題
1 2 3 4 |
[root@localhost ~]# /usr/local/webserver/nginx/sbin/nginx -t #如果測試後結果如下 就表示修改沒問題 nginx: the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/webserver/nginx/conf/nginx.conf test is successful |
reload
在不停止Nginx服務情況下,重啟Nginx
1 |
[root@localhost ~]# /usr/local/webserver/nginx/sbin/nginx -s reload |
開啟和停止
1 2 3 |
[root@localhost ~]# ulimit -SHn 65535 [root@localhost ~]# /usr/local/webserver/nginx/sbin/nginx #開啟 [root@localhost ~]# /usr/local/webserver/nginx/sbin/nginx -s stop #停止 |
開網頁測試
在網址的地方輸入「https://ip或domain」。應該看到的頁面會從原先的「Welcome to nginx !」變成 Apache Tomcat的頁面。如此就設定完成了。
如果後端為LINUX Nginx 系統的話。在LOG分析上需要加上以下設定方可得到最初來源IP而不是上層IP
主要是在location {} 內添加
set_real_ip_from 192.168.1.111;
real_ip_header X-Forwarded-For;
192.168.1.111為上層反向代理的Nginx IP
1 2 3 4 5 6 7 8 9 10 |
server { listen 80; server_name localhost; location / { root /var/www/html; index index.html index.htm; set_real_ip_from 192.168.1.111; real_ip_header X-Forwarded-For; } |
評論
此文章尚無評論。