Nginx是一個軟件
目錄
正向代理與反向代理:
正向代理,比如通過vpn軟件才能訪問外網. 軟件就叫做正向代理。
反向代理,指的是用戶要訪問外網,但是外網悄悄地把這個請求交給bilibili來做,那麼bilibili就是反向代理了。
nginx反向代理: nginx把請求交給其他服務器來做。
動靜分離: css, js之類的都交給nginx來處理,其他動態jsp交給其他服務器來處理
負載均衡: 相同的項目,部署在多臺服務器上, 均衡的訪問
SESSION共享:
下載軟件nginx
nginx.conf配置文件:
nginx目錄下的conf/nginx.conf文件
... #全局塊
events { #events塊
...
}
http { #http塊
... #http全局塊
server { #server塊
... #server全局塊
location [PATTERN] { #location塊
...
}
location [PATTERN] {
...
}
}
server {
...
}
... #http全局塊
}
- 1、全局塊:配置影響nginx全局的指令。一般有運行nginx服務器的用戶組,nginx進程pid存放路徑,日誌存放路徑,配置文件引入,允許生成worker process數等。
- 2、events塊:配置影響nginx服務器或與用戶的網絡連接。有每個進程的最大連接數,選取哪種事件驅動模型處理連接請求,是否允許同時接受多個網路連接,開啓多個網絡連接序列化等。
- 3、http塊:可以嵌套多個server,配置代理,緩存,日誌定義等絕大多數功能和第三方模塊的配置。如文件引入,mime-type定義,日誌自定義,是否使用sendfile傳輸文件,連接超時時間,單連接請求數等。
- 4、server塊:配置虛擬主機的相關參數,一個http中可以有多個server。
- 5、location塊:配置請求的路由,以及各種頁面的處理情況。
http {
upstream svrname{ #負載均衡服務器配置
server 服務器1IP:端口 weight=1權重;
server 服務器2IP:端口 weight=2權重;
server 服務器2IP:端口 backup; #熱備
}
server {
listen 80; #監聽端口
server_name 127.0.0.1; #監聽地址
location / { #/ 表示所有請求轉給這裏
proxy_pass http://svrname; #反向代理,請求轉向svrname定義的服務器列表
index index.html; #設置默認頁
deny 127.0.0.1; #拒絕的ip
allow 172.18.5.54; #允許的ip
}
location ~\.(css|js|png)$ { #請求的url過濾,正則匹配所有的css js png訪問都由Nginx去處理
root 項目文件路徑/webapps/ROOT; #根目錄
}
}
}
啓動:
第一種:直接雙擊nginx.exe
第二種:命令行方式 通過cmd命令啓動:
cd 文件路徑
啓動
start nginx
重啓
nginx -s reload
關閉
nginx -s stop
打開訪問地址
負載均衡
Nginx是軟件負載均衡,
硬件負載均衡: 直接在服務器和外部網絡間安裝負載均衡設備(F5), 在功能和性能上都優於軟件負載均衡
負載均衡後每臺服務器獨有的數據不同步,比如用戶session,
解決方案
- 會話保持,每個用戶請求固定到同一臺服務器, 但是可用性降低,一臺服務器掛宕機就沒了
- 共享緩存,
- 每臺服務器同步緩存信息,服務器多了後io大
- 用Redis來存取緩存信息.