Nginx初探
?
引言
在項目質量保障過程中,尤其是在測試環境的搭建和維護時,經常要與nginx打交道,比如短鏈接、api的ACL控制等配置都與nginx相關。筆者從研究項目的nginx配置出發,然后在本地搭建了nginx服務,開展了進一步探索,將學習的過程記錄于此,一是對自己知識的梳理,二是希望對有緣人有點幫助。
正文
nginx是一個web網站常用的高性能http和反向代理服務器,其具有較好的并發能力,被網易、百度、騰訊、新浪等網站廣泛使用。
1.首先弄清楚正向代理和反向代理
正向代理:代理客戶端,替客戶端收發請求,使真實的客戶端對服務器不可見。如圖所示,proxy和client同屬于一個網絡,對server透明
?
反向代理:代理服務器,提服務器收發請求,使真實的服務器對客戶端不可見。如圖所示,proxy和server同屬于一個網絡,對client透明
?
實際上proxy都是代為收發請求和響應,只是在結構上左右換了下,所以一個叫正向代理,另一個叫反向代理。
2.nginx的反向代理原理
如下圖所示:nginx作為反向代理服務器接收來自客戶端的http請求,然后將請求轉發給內部網絡的web服務器,同時接收來自web服務器的response結果,并返回給客戶端。此時nginx代理服務器對外展現為一個服務器。
?
3.nginx的反向代理的作用
(1)負載均衡。nginx可以將來自客戶端的請求均衡的分發到web服務器集群中的不同機器上進行處理,平衡集群中各個服務器的壓力。這對于大訪問量的web網站來說,是需要的。
(2)安全保障。客戶端直接訪問的不是提供內容的web服務器,為保護網站服務器提供了一層屏障,有利于保護網站的安全。
(3)加速web請求。nginx可以配置緩存,存儲真實web服務器的某些資源和響應,減輕真實服務器的壓力,同時加速web請求
4.本地搭建nginx服務
工作機器是windows環境:
Step1: nginx官網下載nginx壓縮包。
Step2: 進行解壓到nginx目錄
Step3:啟動nginx,命令:
cd nginx start nginx.exe 啟動成功標志:在瀏覽器輸入127.0.0.1 會出現nginx的歡迎頁面
Step4:配置nginx的conf文件
nginx.conf里面有很多配置參數,主要有:工作模式、最大連接數配置(events)和http服務器設置
(1)將baidu的html頁面保存至nginx/html的新建文件夾nginxFiles下,然后進行如下的配置:
server{ ? ?
listen 80; ? ? ?
server_name localhost; ? ?
location / { ? ? ? ? ? ? ? ? root html/nginxFiles; ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? index baidu.html; ? ? ?
? ? ? ? ? ? }
}
以上配置代表:將域名localhost,端口80的“/”下請求,定位到本地root的位置,默認的首頁是baidu.html。配置后重啟nginx,在瀏覽器中再次輸入127.0.0.1就會自動出現baidu的頁面。
(2)配置負載均衡 首先在http中配置負載均衡機器列表,如下所示:每個server代表一臺機器,后面加上ip地址:端口,weight代表權重,權重越大,則nginx把客戶端請求轉發給他的可能性就越大。
upstream vivi{ ? ?
server 127.0.0.1:8050 ?weight=1; ? ? ? ?
server 127.0.0.1:8060 ?weight=2;
}
然后配置server中的location,如下:表示攔截域名后帶/所有請求,轉發至vivi中的機器進行處理,實現負載均衡。proxy_pass表示請求轉向自定義服務器列表。項目中的短鏈接服務,就是用proxy_pass請求轉向短鏈接服務器即可。
location / {
? ? proxy_pass http://vivi;
}
Step5:修改配置后,重啟nginx服務生效。常用的nginx命令
start nginx.exe ?#啟動
nginx nginx -s stop ?#關閉
nginx nginx -s reload #重啟nginx
5.nginx支持多域名配置
可以在一個文件中配置多個server,如下:
server{ ? ? ?listen 80; ? ?
?server_name www.vivi.com; #綁定域名 ?
?index index.htm index.html index.php #默認文件 ? ?
?root /home/www/vivi.com #網站根目錄 ? ? ? ? ? ?
?include location.conf #調用其他規則,也可去除 }
?
server{ ? ?
listen 81; ? ?
server_name www.test.com; #綁定域名 ?
index index.htm index.html index.php #默認文件 ?
root ? ? ? ?/home/www/msn.web126.com #網站根目錄 ? ?
include location.conf #調用其他規則,也可去除
}
也可以在一個server中的server_name后面配置多個域名,如:
server{ ? ? ?
? listen 80; ?
? server_name www.vivi.vom www.test.com
}
6.nginx的域名匹配順序
(1)準確的server_name匹配,如下配置:只精準vivi.info 和 www.vivi.info兩個域名:
server{ ?listen 80;
? ? ? ? ?server_name vivi.info www.vivi.info; ?
? ? ? ? ?... }
(2)以通配符開始的字符串,如下配置:能匹配以vivi.info結尾的所有域名
server{ listen 80;
? ? ? ? ?server_name *.vivi.info;
? ? ? ?... }
(3)以通配符結束的字符串,如下配置:能匹配以www開頭的所有域名
server{ listen 80;
? ? ? ? server_name www.*; ...
? ? ?}
(4)匹配正則表達式,如下配置:能匹配以vivi.org結尾的所有域名
server{ listen 80;
? ? ? ? server_name vivi\.org$; ...
?
? ? ? ? }
結語
本文只根據項目的需要,研究了項目中常用的配置,為了提高nginx性能,還有很多高級的配置參數,可以根據需要進行深入學習
推薦學習資料:nginx官網文檔
轉載于:https://www.cnblogs.com/zengkefu/p/5814793.html
總結
- 上一篇: win10系统怎么改win7 如何将wi
- 下一篇: 在WildFly中运行多个standal