一、配置文件理解
# 編輯配置文件
vi /usr/local/nginx/conf/nginx.conf
# 只看未註釋的
# 代表併發處理的數量,值越大併發越大,只要設備支持
worker_processes 1;
# nginx服務器和用戶網絡連接
events {
# 代表 worker_processes 最大連接數
worker_connections 1024;
}
# 大部分修改都在這裏,代理、緩存、日誌等等(註釋掉的我這裏刪除了)
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
# nginx監聽端口號
listen 80;
# 主機名稱
server_name localhost;
# 當路徑包含某個值時進行的操作
location / {
root html;
index index.html index.htm;
}
# 錯誤頁面
error_page 500 502 503 504 /50x.html;
# 當路徑包含某個值時進行的操作
location = /50x.html {
root html;
}
}
}
二、反向代理
# 1、安裝tomcat和jdk並配置
# 2、把8080端口加入防火牆,或者關閉防火牆
# 3、修改nginx配置文件
vi /usr/local/nginx/conf/nginx.conf
server {
listen 80;
# 這個是把原先的local改成IP地址了
server_name 192.168.74.132;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
# 這個是新增
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
}
...
# 保存
# 熱部署刷新一下
./nginx -s reload
# 訪問
http://192.168.74.132/
# 監聽端口,根據路徑訪問不同的地址
# 編輯配置文件,新增一個server
server {
# 監聽9001端口
listen 9001;
server_name 192.168.74.132;
# ~ 代表正則,路徑中包含one則跳轉
location ~ /one/ {
proxy_pass http://127.0.0.1:8001;
}
location ~ /two/ {
proxy_pass http://127.0.0.1:8002;
}
}
server {
...
#################### 擴展 ######################
# location說明
# 語法:
location [= | ~ | ~* | ^~] URI {
}
# 解釋
# =:用於不含正則表達式的URI前,要求請求字符串與URI嚴格匹配,如果匹配成功,就停止向下搜索立即處理
# ~:用於表示URI包含正則表達式,並且區分大小寫
# ~*:用於表示URI包含正則表達式,並且不區分大小寫
# ^~:用於不含正則表達式的 URI前,要求Nginx服務器找到標識URI和請求字符串匹配度最高的location
# 立即使用此location處理請求,而不再使用location塊中的正則URI和請求字符串做匹配。
# PS:如果URI包含正則表達式,則必須要有~ 或者 ~* 標識
三、負載均衡
# 編輯配置文件
vi /usr/local/nginx/conf/nginx.conf
# http 中新增
http{
...
#gzip on;
# 新增 upstream
# myserver 是自定義的名字
upstream myserver{
server 115.28.52.63:8001 weight=1;
server 115.28.52.63:8002 weight=1;
}
# 修改server
server {
listen 80;
server_name 192.168.74.132;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
...
#################### 擴展 ###################
1、輪詢
每個請求按實際順序逐一分配到不同的後端服務器,如果後端服務器down掉,能自帶剔除
2、weight
weight 代表權重,默認爲1,權重越高被分配的客戶端越高
指定輪詢機率,wight和訪問比率成正比,用於後端服務器性能不均的情況,例如:
upstream server_pool{
server 192.168.1.1 weight=10;
server 192.168.1.2 weight=9;
}
3、ip_hash
每個請求按訪問IP的hash結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決session問題。例如
upstream server_pool{
ip_hash;
server 192.168.1.1:80;
server 192.168.1.2:81;
}
4、fair(第三方)
按後端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream server_pool{
server 192.168.1.1:80;
server 192.168.1.2:80;
fair;
}
###############################################
四、動靜分離
# 1、動靜分離,把動態請求和靜態請求通過nginx分開
# 把靜態文件單獨放在一個服務器上,另一種是動態靜態文件混合放在一起,通過nginx來區分
# 在根目錄下創建兩個文件夾,www和image 一個放html文件一個放圖片文件,自己創建的文件夾
# 修改配置文件
...
#gzip on;
server {
listen 80;
server_name 192.168.74.132;
#charset koi8-r;
#access_log logs/host.access.log main;
# 路徑包含www時
location /www/ {
root /data/;
index index.html index.htm;
}
# 路徑包含image時
location /image/ {
root /data/;
# 列出當前文件夾中的內容
autoindex on;
}
...
# 重新部署
./nginx -s reload
# 測試
http://192.168.74.132/image/1.png
# 會把當前文件夾中的文件列出來(autoindex 參數的作用)
http://192.168.74.132/image/
# 訪問頁面
http://192.168.74.132/www/a.html
五、高可用的集羣
# 當前nginx宕機時,也可用正常訪問服務器,就是所謂的高可用
# 通過keepalived 來實現nginx的主備機制,當一臺宕掉,另一臺就接手
# 兩臺機器都按照nginx、keepalived 一臺當作主、一臺當作備
# 安裝keepalived
yum install -y keepalived
# 驗證
rpm -q -a keepalived
# 編輯keepalived 配置文件
vi /etc/keepalived/keepalived.conf
# 配置文件內容
# 改天單獨學一下keepalived
# 原理就是 兩臺機器都按照keepalived 和 nginx,啓動nginx 和 keepalived。
# 編寫一個測試腳本,來檢測nginx 有沒有掛,通過keepalived 調用這個腳本
# 當一臺的nginx掛掉就用另一臺。(keepalived 對外提供一個浮動IP,通過這個做到無感切換)