1. 程式人生 > >LNMP環境相關配置Nginx

LNMP環境相關配置Nginx

linux

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

Nginx配置:

1. 默認虛擬主機

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

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

include vhost/*.conf;

}

技術分享圖片

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

技術分享圖片

技術分享圖片

技術分享圖片

創建測試文件:

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

技術分享圖片

2. 用戶認證

新建一個虛擬主機:

cd /usr/local/nginx/conf/vhost

vim test.com.conf

技術分享圖片

使用httpd的htpasswd命令:

技術分享圖片

技術分享圖片

windows下測試的效果:

技術分享圖片

對目錄進行用戶認證:

技術分享圖片

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;
    }
}

技術分享圖片

4. Nginx的訪問日誌

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

技術分享圖片

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

技術分享圖片

技術分享圖片

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

技術分享圖片

技術分享圖片

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

技術分享圖片

6. Nginx防盜鏈

vim test.com.conf

技術分享圖片

測試:

技術分享圖片

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

技術分享圖片

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

技術分享圖片

9. Nginx代理

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

技術分享圖片

或者這樣:

技術分享圖片

10. Nginx配置SSL

SSL工作流程:

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

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

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

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

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

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

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

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

HTTPS通信過程:

技術分享圖片

生成SSL密鑰對:

技術分享圖片

技術分享圖片

php-fpm配置:

1. php-fpm的pool

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

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

2. php-fpm的慢執行日誌

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

技術分享圖片

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的子進程最多可以處理這麽多請求,當達到這個數值時,它會自動退出。


LNMP環境相關配置Nginx