Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。其特點是占有內存少,並發能力強。
下面就詳細的說一說如何用Nginx實現反向代理。
首先:來做點准備工作,最少兩個tomcat,另外設置兩個域名並解析到本地ip(因為nginx是直接配置域名)
(1)准備兩個tomcat
分別設置兩個tomcat的/conf/server.xml中的端口號,如下
tomcat1端口號分別設置為:8205 8280 8209
tomcat2端口號分別設置為:8215 8281 8219
(2)添加測試內容
分別刪除目錄webapps下所有文件,新建一個文件夾ROOT,並在該目錄下新建index.html
內容可以設置為:這里是8280端口。(另一個:這里是8281端口。)
(3)啟動兩個tomcat
(4)分別訪問兩個tomcat下的項目
訪問下面兩個網址:
127.0.0.1/8280
127.0.0.1/8281
如果能夠訪問到對應的index.html文件就說明tomcat配置且啟動成功。
(5)設置兩個域名並做解析
修改hosts文件,目的是為了設置2個域名, tomcat1.com和 tomcat2.com並且解析到本地ip:127.0.0.1
路徑:C:\Windows\System32\drivers\etc
打開hosts文件,加上(如果修改后無法保存,可以把hosts文件復制到桌面,修改完成后再替換原有hosts文件)
添加內容如下:
127.0.0.1 tomcat1.com
127.0.0.1 tomcat2.com
(6)測試域名是否解析成功
127.0.0.1/8280;127.0.0.1/8281分別修改為
tomcat1.com:8280;tomcat2.com:8281
如果顯示結果如上圖所示,說明域名設置並解析成功。
下面開始正式配置Nginx服務器的方向代理。
1. 下載、安裝Nginx服務器
輸入網址:http://nginx.org/en/download.html ,選個合適的版本,下載后解壓到合適的路徑。
解壓后,如圖所示:nginx.exe可以直接運行,但是不建議。
2. 配置反向代理
打開/conf/nainx.conf文件,刪除server{ …… },或者注銷掉
重新添加server{ }
listen:監聽的端口號
server_name: 訪問域名
location :這里配置為/ 直接匹配端口下的默認ROOT下的項目,location內容很廣泛,
參見:https://segmentfault.com/a/1190000009651161
proxy_pass :為項目的實際訪問地址
server { listen 80; server_name tomcat1.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://127.0.0.1:8280; index index.html index.htm; } } server { listen 80; server_name tomcat2.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://127.0.0.1:8281; index index.html index.htm; } }
3.啟動、關閉、重啟Nginx服務器
打開cmd.exe運行命令。
注意:一定要在nginx.exe文件所在的文件夾下操作。
(1)啟動:
H:\nginx-1.12.2>start nginx
或H:\nginx-1.12.2>nginx.exe
注:建議使用第一種,第二種會使你的cmd窗口一直處於執行中,不能進行其他命令操作。
(2)停止:
H:\nginx-1.12.2>nginx.exe -s stop
或H:\nginx-1.12.2>nginx.exe -s quit
注:stop是快速停止nginx,可能並不保存相關信息;quit是完整有序的停止nginx,並保存相關信息。
(3)重新載入Nginx:
H:\nginx-1.12.2>nginx.exe -s reload
當配置信息修改,需要重新載入這些配置時使用此命令。
(4)重新打開日志文件:
H:\nginx-1.12.2>nginx.exe -s reopen
4. 測試是否配置成功
輸入域名:tomcat1.com和tomcat2.com
如果輸入域名后顯示如上圖,即為成功配置。
5.可能會遇到的問題(進程關閉失敗)
在使用的過程中,你可能會遇到一個很奇葩的問題,就是當關閉命令執行了無數遍,頁面卻還是可以直接用域名訪問。
這個時候就說明你的進程並沒有真正關閉,我們可以用命令來查詢一下:
cmd中輸入:netstat -an|find "0:80"
如果有,說明真的沒有關閉這個進程。沒有,那就看看是不是瀏覽器緩存的問題。
針對進程不能正常關閉,可以用如下命令來關閉:taskkill /F /IM nginx.exe > nul
以上就是用nginx服務器做反向代理服務器的全部內容,希望對你有所幫助。
如需轉載,請注明地址:http://www.cnblogs.com/j-star/p/8785334.html