nginx來源:
是一款由俄羅斯程式設計師Igor Sysoev所開發輕量級的網頁伺服器、反向代理伺服器以及電子郵件(IMAP/POP3)代理伺服器。起初是供俄國大型的入口網站及搜尋引擎Rambler(俄語:Рамблер)使用。
此軟體BSD-like協議下發行,可以在UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等作業系統中執行。
nginx 主要功能:
1.處理靜態資源
2.反向代理
3.負載均衡
4.訪問控制
(一)處理靜態資源
假如現在我有一臺雲伺服器,我想在雲伺服器上掛在一個頁面
如下簡易頁面 index.html
<html> <head> <title>我的服務頁面</title> </head> <body> <div>.....</div> </body> </html>
通常兩種方法
方法一 在自己的伺服器安裝個tomcat把頁面配置到容器的服務裡。即可訪問。
具體操作 vi serser.xml
在Engine 節點下新增
<Host name="www.sam.com"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="www.sam.com_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> <Context path="" docBase="/home/自己的需要配置的頁面" /> </Host>
這是一種方式,當然還有其他的配置方式。可以參考別人
方法二 使用nginx
http {
include mime.types;
default_type application/octet_stream;
sendfile on;
server {
listen 80;
server_name localhost;
location /page {
root /html/login
}
location /page {
alias /html/desplay/
}
}
}
- alias 後面必須要用 “/” 結束,否則會找不到檔案,而 root 則對 ”/” 可有可無。
- alias 只能作用在location中,而root可以存在server、http和location中。
(二)反向代理
什麼是反向代理?
正向代理: 代理端是客戶端
反向代理: 代理端是服務端
正向代理影藏的是客戶端,反向代理影藏的是服務端。
額外話題 "越域" 與 "跨域"
產生越域的條件:
1. 請求協議不同 http -> https 或者 https -> http
2. 域名不同
3. 不同的埠
反向代理可以很簡單的覺得因為埠導致的越域問題。具體使用如下:
server {
listen 80;
location /api {
proxy_pass http://localhost:8808;
}
}
此外因為協議的不同導致的越域問題 本人也不知道怎麼解決,至於第二個 域名的不用 這種情況的跨域 需要在請的請求前 加個新增個head 請求頭,具體如何操作看我以後的部落格謝謝。
(三)負載均衡
當一個網站的訪問量足夠大的時候,需要增加服務的訪問效能,升級伺服器效能和增加記憶體的方式,當使用者足夠多的時候需要增加主機了。
負載均衡就是 多型伺服器組成一個組,完成相同的功能的服務,當使用者訪問時可以根據每臺服務的狀態完成不同的使用者請求。
假設 現在我有四臺主機 112.12.123.1 , 112.12.123.2 , 112.12.123.3 。 112.12.123.4 實現如下:
upstream myservers {
server 112.12.123.1:8080 weight = 2;
server 112.12.123.2:8080 weight = 3;
server 112.12.123.3:8080 down;
server 112.12.123.4:8080 backup;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
location / {
root /data/page;
}
lcoation /css {
alias /data/css/;
}
location /api {
proxy_pass http://myservers;
}
}
}
upstream內建了三種負載均衡策略,分別是:
-
round-robin,輪循(預設)
Nginx根據請求次數,將每個請求均勻分配到每臺伺服器
-
least-connected,最少連線
將請求分配給連線數最少的伺服器。Nginx會統計哪些伺服器的連線數最少。
-
ip-hash
繫結處理請求的伺服器。第一次請求時,根據該客戶端的IP算出一個HASH值,將請求分配到叢集中的某一臺伺服器上。後面該客戶端的所有請求,都將通過HASH演算法,找到之前處理這臺客戶端請求的伺服器,然後將請求交給它來處理。 在這裡,我們沒有指定負載均衡策略,那麼它就是預設的round-robin。
weight?
通過指定每臺伺服器的權重,我們可以進一步影響nginx的負載均衡演算法 在上面的示例中,如果未配置伺服器權重,這意味著所有指定的伺服器都被視為具有同等資格的特定 負載平衡方法。 注意,weight只能用在round-robin策略中
其餘的一些配置
backup
將伺服器標記為備份伺服器。它將在主伺服器不可用時處理請求。
down
將伺服器標記為永久不可用。
(四)訪問控制
訪問控制說白了就是和白名單,黑名單差不多。這裡空的是ip地址。
具體配置如下:
location / {
allow 121.237.63.233;
allow 121.237.63.220;
deny all;
}
allow和deny這兩個指令的意思是指,允許ip和限制ip ,all 表示所有。
nginx 常用命令
找到自己安裝目錄 nginx/sbin 路徑下來
啟動 ./nginx
停止 ./nginx -s stop
重啟 ./nginx -s reload