1.安裝
yum install nginx -y
2.添加虛擬主機
server {
listen 10.1.1.111:80; #監聽端口爲80
server_name www.yang.com; ## 綁定域名,虛擬主機和真實主機監聽的IP和端口一致時,可通過分析域名來判斷是訪問虛擬主機還是真實主機,因爲一個IP可以綁定多個域名
root /cs4; ##設置根目錄
charset utf-8; ## 設置中文編碼,沒有 中文會亂碼
index 233.html; ## 設置默認頁面爲233.html,就是訪問第一個找這個文件 默認爲index.html
}
nginx配置虛擬主機很簡單在配置文件裏的server段後面再最加一個server段,裏面配置監聽端口和根目錄即可。
3.反向代理
upstream jjjj{
server 10.1.1.114 max_fails=3 fail_timeout=20s weight=1 backup;
#backup 表示爲備份服務器,只有下面兩個無法訪問或者特別忙的時候纔會被請求 換成down 表示無論如何都無法被訪問的,一般用於下架服務器
server 10.1.1.112 max_fails=3 fail_timeout=20s weight=1;
server 10.1.1.113:80 max_fails=3 fail_timeout=20s weight=2;
#創建一個後端組名字jjjj,有兩個後服務器,端口不加默認爲80
#max_fails=3 最大失敗次數0表示禁止失敗嘗試
#fail_timeout=20s 最大失敗超時時間
weight=2 輪詢權重,表示112訪問一次 113會被訪問兩次
ip_hash;#nginx默認分配爲輪詢,加這個就變成了IP哈希算法,效果是計算客戶機的IP每次都分配到同一個後端主機,可以解決session一致問題。
# fair; fair算法 顧名思義,公平地按照後端服務器的響應時間(rt)來分配請求,響應時間短即rt小的後端服務器優先分配請求。如果需要使用這種調度算法,必須下載Nginx的upstr_fair模塊。
#url_hash; url哈希算法,計算url哈希,保證計算同一個url每次都能分配到同一個後端主機,一般用於後端爲緩存服務器來提高緩存命中率
}
以上代碼在http內,server以上
location / {
proxy_pass http://jjjj;
proxy_set_header zsip $remote_addr;
#將remote_addr變量的值傳遞給 zsip變量,remote_addrm裏面存放的是客戶機的訪問IP,目的是把真實Ip傳遞給後端服務器日誌裏
#表示所有訪問該服務器的請求都轉給jjjj組
}
#在server 的liocation 段加入跳轉後端組的代碼
以上代碼在server段內
#如果不改默認記錄的是前端反代server的ip,注意這邊調用要加前綴 "http_".
動靜分離配置
location ~ \.(php)?$ {
proxy_pass http://dddd;
#表示匹配的末尾爲.php後綴的請求,轉發給dddd組處理
}
location ~ \.(swf|gif|jpg)?$ {
#表示匹配到圖片的轉給jjjj後端組
proxy_pass http://jjjj;
}
location ~ / {
#表示前面兩個沒匹配上的,都給jjjj組處理
proxy_pass http://jjjj;
}
~ (.png)$ ##匹配後綴爲.png的url
~ .(png|jpg)$ ##匹配後綴爲.png或者.jpg的url
緩存
proxy_cache_path /cache/nginx/ levels=1:2 keys_zone=my_cache:32m inactive=1d max_size=10g;
## 創建一個名爲my_cache的緩存,使用32M內存,10g的硬盤,保存1天,注意/cache/nginx/ 文件夾屬主要是nginx用戶
add_header serverip $server_addr;
##傳遞一個字段serverip給訪問的瀏覽器 ,值是服務器的Ip地址,反代和和後端加了,瀏覽器都會顯示
add_header cache_status $upstream_cache_status;
## 傳遞一個字段給訪問的瀏覽器,值是緩存的命中狀態
#以上代碼在http段內部,在server段以上
proxy_cache my_cache; #啓用緩存
proxy_cache_valid 304 12h; #304狀態的保存12小時
proxy_cache_valid any 10m; #其他狀態保存10分鐘
#調用,以上代碼在location / { }內部
PS : 實驗一定要將selinux 關閉,浪費了三天時間,如果修改緩存的時間,對已經緩存的內容不起作用,已經緩存的內容還是要等到前一個配置時間纔會失效。
PS :匹配錯誤心得,proxy_pass 後面如果要帶/ ,前面location 最後也必須帶,建議都不要帶
root /usr/share/nginx/html/doc; 修改根只能在server段修改