laravel ngxin部署配置
server {
listen 80;
server_name example.com;
root /example.com/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
配置說明
- listen 80; 作用:監(jiān)聽服務(wù)器的 80 端口,這是 HTTP 的默認(rèn)端口开泽。所有訪問 http://example.com 的請求都會通過 80 端口處理捂寿。
- server_name example.com; 作用:指定該虛擬主機的域名口四,即服務(wù)器將響應(yīng) example.com 這個域名的請求。
- root /example.com/public; 作用:定義網(wǎng)站的根目錄秦陋,當(dāng)訪問該域名時蔓彩,Nginx 會從 /example.com/public 目錄中查找文件。
- 安全頭部:
add_header X-Frame-Options "SAMEORIGIN"; //作用:防止網(wǎng)頁被其他網(wǎng)站通過 iframe 嵌入驳概,避免點擊劫持攻擊赤嚼,除非來自同一域名的頁面。
add_header X-XSS-Protection "1; mode=block"; //作用:啟用瀏覽器的 XSS 攻擊防護(hù)機制顺又,當(dāng)檢測到可能的 XSS 攻擊時阻止頁面加載更卒。
add_header X-Content-Type-Options "nosniff"; //作用:防止瀏覽器猜測 MIME 類型,避免因為錯誤的文件類型解析而引發(fā)的安全問題稚照。- index index.html index.htm index.php //作用:定義默認(rèn)的索引文件列表蹂空。當(dāng)訪問一個目錄而不指定文件名時,Nginx 會依次查找 index.html果录、index.htm 或 index.php 作為默認(rèn)文件上枕。
- charset utf-8; // 作用:設(shè)置網(wǎng)頁默認(rèn)的字符編碼為 UTF-8,這是支持多語言字符的標(biāo)準(zhǔn)編碼弱恒。
- Location塊:
location / { try_files uri/ /index.php?$query_string; }
作用:處理所有根路徑的請求辨萍,嘗試執(zhí)行以下操作:- 如果請求的文件存在,直接返回該文件 ($uri)斤彼;
- 如果請求的目錄存在分瘦,返回該目錄下的文件 ($uri/)蘸泻;
- 如果都不存在,將請求轉(zhuǎn)發(fā)給 index.php 進(jìn)行處理嘲玫,并附加查詢參數(shù)悦施。
location = /favicon.ico { access_log off; log_not_found off; }.
作用:單獨處理 /favicon.ico 請求,關(guān)閉訪問日志和未找到日志去团,減少日志輸出抡诞。
location = /robots.txt { access_log off; log_not_found off; }
作用:與 /favicon.ico 類似,專門處理 /robots.txt 請求土陪,禁用日志記錄昼汗。
- error_page 404 /index.php; //作用:當(dāng)遇到 404 錯誤(即頁面未找到)時,將所有請求重定向到 index.php鬼雀,方便 PHP 框架(如 Laravel)處理路由顷窒。
- PHP FastCGI 配置:
location ~ .phprealpath_rootrealpath_root 是根目錄的真實路徑,$fastcgi_script_name 是請求的 PHP 文件名坛掠。
? include fastcgi_params;
? 作用:包含 Nginx 標(biāo)準(zhǔn)的 FastCGI 參數(shù)赊锚,這些參數(shù)告訴 PHP-FPM 請求的具體信息(如請求方法、查詢字符串等)屉栓。- location ~ /.(?!well-known).* { deny all; }
//作用:禁止訪問以 . 開頭的隱藏文件或目錄(如 .htaccess舷蒲、.git),但允許 .well-known 目錄下的文件系瓢,這是為了保護(hù)敏感的文件不被訪問阿纤。
php-fpm 配置以及說明
[root@iZ2vc5m6dhhc0o837er5dwZ etc]# cat php-fpm.conf
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice
[www]
listen = /tmp/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 20
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 20
pm.max_requests = 1024
pm.process_idle_timeout = 10s
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = var/log/slow.log
- [global] 全局設(shè)置:
? pid = /usr/local/php/var/run/php-fpm.pid:
? 作用:指定 PHP-FPM 進(jìn)程 ID (PID) 文件的路徑,用于記錄 PHP-FPM 進(jìn)程的進(jìn)程號夷陋。系統(tǒng)通過該文件監(jiān)控和管理 PHP-FPM 進(jìn)程。
? error_log = /usr/local/php/var/log/php-fpm.log:
? 作用:指定錯誤日志文件的路徑胰锌,記錄 PHP-FPM 運行過程中發(fā)生的錯誤和警告信息骗绕。
? log_level = notice:
? 作用:設(shè)置日志記錄的詳細(xì)程度,notice 表示記錄中等嚴(yán)重級別及以上的日志信息资昧。
- [www] 池(Pool)配置:
? listen = /tmp/php-cgi.sock:
? 作用:定義 PHP-FPM 的監(jiān)聽地址酬土。這里指定的是 Unix 套接字 /tmp/php-cgi.sock,用于與 Nginx 進(jìn)行通信格带。
? listen.backlog = -1:
? 作用:設(shè)置套接字的連接請求隊列長度撤缴,-1 表示使用系統(tǒng)默認(rèn)值刹枉。
? listen.allowed_clients = 127.0.0.1:
? 作用:限制可以連接到 PHP-FPM 的客戶端地址。127.0.0.1 表示只有本地主機可以連接屈呕。
? listen.owner = www:
? 作用:指定套接字文件的所有者為 www 用戶微宝。
? listen.group = www:
? 作用:指定套接字文件的用戶組為 www 組。
? listen.mode = 0666:
? 作用:設(shè)置套接字的權(quán)限為 0666虎眨,表示所有用戶都可以讀寫該套接字蟋软。
? user = www 和 group = www:
? 作用:指定 PHP-FPM 子進(jìn)程運行時的用戶和用戶組。這里設(shè)置為 www嗽桩,以提高系統(tǒng)安全性岳守。
- 進(jìn)程管理設(shè)置:
? pm = dynamic:
? 作用:設(shè)置 PHP-FPM 的進(jìn)程管理模式為動態(tài)模式。動態(tài)模式根據(jù)請求數(shù)量動態(tài)調(diào)整進(jìn)程的數(shù)量碌冶。
? pm.max_children = 20:
? 作用:設(shè)置允許的最大 PHP-FPM 子進(jìn)程數(shù)為 20湿痢。
? pm.start_servers = 10:
? 作用:指定 PHP-FPM 啟動時創(chuàng)建的初始子進(jìn)程數(shù)為 10。
? pm.min_spare_servers = 10:
? 作用:設(shè)置 PHP-FPM 保持的最小空閑子進(jìn)程數(shù)為 10扑庞。
? pm.max_spare_servers = 20:
? 作用:設(shè)置 PHP-FPM 保持的最大空閑子進(jìn)程數(shù)為 20譬重。
? pm.max_requests = 1024:
? 作用:每個 PHP-FPM 子進(jìn)程在處理 1024 個請求后自動重啟,以避免內(nèi)存泄漏嫩挤。
- 請求處理相關(guān)設(shè)置:
? pm.process_idle_timeout = 10s:
? 作用:空閑子進(jìn)程在空閑 10 秒后會被終止害幅。
? request_terminate_timeout = 100:
? 作用:設(shè)置每個請求的最大執(zhí)行時間為 100 秒。如果超過該時間限制岂昭,PHP-FPM 會終止請求以现。
? request_slowlog_timeout = 0:
? 作用:指定記錄慢請求日志的超時時間。0 表示不記錄慢請求日志约啊。
? slowlog = var/log/slow.log:
? 作用:指定慢請求日志的路徑邑遏。如果啟用了慢請求日志,該文件將記錄那些執(zhí)行時間過長的請求恰矩。