LNMP環境相關配置Nginx

LNMP環境搭建已經在上一篇文章記錄了。本篇主要記錄相關的配置,如Nginx、php

Nginx配置:

    1. 默認虛擬主機

        Nginx的默認虛擬主機的概念和httpd的類似,第一個被nginx加載的虛擬主機就睡默認虛擬主機。不同的是,nginx可以標記默認虛擬主機,如果沒有標記則第一個就是默認的;

        修改主配置文件nginx.conf,在結束符號 } 上面加入一行配置,如下:

            include vhost/*.conf; 

            }

        image.png

        意思是/usr/local/nginx/conf/vhost/下面的所有以.conf結尾的文件都會加載,這樣我們只需把虛擬主機文件放在vhost目錄下就行了

        image.png

        image.png

        image.png

        創建測試文件:

        echo "Nginx默認虛擬主機" > /data/nginx/default.com/index.html

        image.png

    2. 用戶認證

        新建一個虛擬主機:

        cd /usr/local/nginx/conf/vhost

        vim test.com.conf

        image.png

        使用httpd的htpasswd命令:

        image.png

        image.png

        windows下測試的效果:

        image.png

        對目錄進行用戶認證:

        image.png

    3. 域名重定向

server
{
    listen 80;
    server_name test1.com test2.com;
    index index.htm index.html index.php;
    root /data/nginx/test1.com;
    # 域名重定向
    if ($host != 'test1.com'){
        rewrite ^/(.*)$ http://test1.com/$1 permanent;
    }
}

    image.png

    4. Nginx的訪問日誌

        Nginx日誌格式定義在配置文件裏:

        image.png

        vim test.com.conf,在server裏面添加一行內容即可!

        image.png

        image.png

        nginx日誌切割需要編寫腳本實現:

vim /usr/local/sbin/nginx_log_rorate.log.sh
#!/bin/bash
d=`date -d "-1 day" +%Y%m%d`
logdir="/data/logs"
nginx_pid="/usr/local/nginx/logs/nginx.pid"
cd $logdir
for log in `ls *.log`
do
    mv $log $log-$d
done
/bin/kill -HUP `cat $nginx_pid`

     寫完腳本,還需要增加任務計劃:

      0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rorate.log.sh

    5. 配置靜態文件不記錄日誌並添加過期時間

        vim test.com.conf

        image.png

        image.png

        查看日誌文件:(沒有記錄!)

        image.png

    6. Nginx防盜鏈

        vim test.com.conf

        image.png

        測試:

        image.png

    7. 訪問控制(主允許192.168.159.131和127.0.0.1 訪問等!)

        image.png

    8. Nginx解析php(經常出現502錯誤!查看fastcgi_passwd是否和php-fpm服務監聽一致)

        image.png

    9. Nginx代理

        vim /usr/local/nginx/conf/vhost/proxy.conf

        image.png

        或者這樣:

        image.png

    10. Nginx配置SSL

        SSL工作流程: 

        瀏覽器發送一個https的請求給服務器;

        服務器要有一套數字證書,可以自己製作(後面的操作就是阿銘自己製作的證書),也可以向組織申請,區別就是自己頒發的證書需要客戶端驗證通過,纔可以繼續訪問,而使用受信任的公司申請的證書則不會彈出>提示頁面,這套證書其實就是一對公鑰和私鑰;

        服務器會把公鑰傳輸給客戶端;

        客戶端(瀏覽器)收到公鑰後,會驗證其是否合法有效,無效會有警告提醒,有效則會生成一串隨機數,並用收到的公鑰加密;

        客戶端把加密後的隨機字符串傳輸給服務器;

        服務器收到加密隨機字符串後,先用私鑰解密(公鑰加密,私鑰解密),獲取到這一串隨機數後,再用這串隨機字符串加密傳輸的數據(該加密爲對稱加密,所謂對稱加密,就是將數據和私鑰也就是這個隨機字符串>通過某種算法混合在一起,這樣除非知道私鑰,否則無法獲取數據內容);

        服務器把加密後的數據傳輸給客戶端;

        客戶端收到數據後,再用自己的私鑰也就是那個隨機字符串解密;

    HTTPS通信過程:

        image.png

    生成SSL密鑰對:

            image.png

            image.png

php-fpm配置:

    1. php-fpm的pool

        vim /usr/local/php-fpm/etc/php-fpm.conf

        image.png

        image.png

        image.png

        image.png

        image.png

    2. php-fpm的慢執行日誌

        vim /usr/local/php-fpm/etc/php-fpm.d/www.conf

        image.png

    3. php-fpm定義open_basedir

        php_admin_value[open_basedir]=/data/nginx/wap.com:/tmp/

    4. php-fpm進程管理       

         pm = dynamic  //動態進程管理,也可以是static

         pm.max_children = 50 //最大子進程數,ps aux可以查看

         pm.start_servers = 20 //啓動服務時會啓動的進程數

         pm.min_spare_servers = 5 //定義在空閒時段,子進程數的最少數量,如果達到這個數值時,php-fpm服務會自動派生新的子進程。

         pm.max_spare_servers = 35 //定義在空閒時段,子進程數的最大值,如果高於這個數值就開始清理空閒的子進程。

         pm.max_requests = 500  //定義一個子進程最多處理的請求數,也就是說在一個php-fpm的子進程最多可以處理這麼多請求,當達到這個數值時,它會自動退出。

        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章