Nginx學習之--配置文件

一、配置文件理解 

# 編輯配置文件
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,通過這個做到無感切換)

 

發佈了81 篇原創文章 · 獲贊 15 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章