php nginx部署

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

配置說明

  1. listen 80; 作用:監(jiān)聽服務(wù)器的 80 端口,這是 HTTP 的默認(rèn)端口开泽。所有訪問 http://example.com 的請求都會通過 80 端口處理捂寿。
  2. server_name example.com; 作用:指定該虛擬主機的域名口四,即服務(wù)器將響應(yīng) example.com 這個域名的請求。
  3. root /example.com/public; 作用:定義網(wǎng)站的根目錄秦陋,當(dāng)訪問該域名時蔓彩,Nginx 會從 /example.com/public 目錄中查找文件。
  4. 安全頭部:
    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ā)的安全問題稚照。
  5. index index.html index.htm index.php //作用:定義默認(rèn)的索引文件列表蹂空。當(dāng)訪問一個目錄而不指定文件名時,Nginx 會依次查找 index.html果录、index.htm 或 index.php 作為默認(rèn)文件上枕。
  6. charset utf-8; // 作用:設(shè)置網(wǎng)頁默認(rèn)的字符編碼為 UTF-8,這是支持多語言字符的標(biāo)準(zhǔn)編碼弱恒。
  7. Location塊:
    location / { try_files uriuri/ /index.php?$query_string; }
    作用:處理所有根路徑的請求辨萍,嘗試執(zhí)行以下操作:
  8. 如果請求的文件存在,直接返回該文件 ($uri)斤彼;
  9. 如果請求的目錄存在分瘦,返回該目錄下的文件 ($uri/)蘸泻;
  10. 如果都不存在,將請求轉(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 請求土陪,禁用日志記錄昼汗。

  1. error_page 404 /index.php; //作用:當(dāng)遇到 404 錯誤(即頁面未找到)時,將所有請求重定向到 index.php鬼雀,方便 PHP 框架(如 Laravel)處理路由顷窒。
  2. PHP FastCGI 配置:
    location ~ .php{ ? 作用:匹配所有 .php 后綴的文件請求。 ? fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; ? 作用:通過 Unix 套接字將請求轉(zhuǎn)發(fā)給 PHP-FPM 處理 PHP 文件源哩。這里使用的是 /var/run/php/php7.2-fpm.sock 套接字鞋吉。 ? fastcgi_index index.php; ? 作用:指定 index.php 為默認(rèn)的 FastCGI 入口文件。 ? fastcgi_param SCRIPT_FILENAMErealpath_rootfastcgi_script_name; ? 作用:指定 SCRIPT_FILENAME 參數(shù)励烦,告訴 PHP-FPM 要執(zhí)行的實際腳本路徑谓着。realpath_root 是根目錄的真實路徑,$fastcgi_script_name 是請求的 PHP 文件名坛掠。
    ? include fastcgi_params;
    ? 作用:包含 Nginx 標(biāo)準(zhǔn)的 FastCGI 參數(shù)赊锚,這些參數(shù)告訴 PHP-FPM 請求的具體信息(如請求方法、查詢字符串等)屉栓。
  3. 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
  1. [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)重級別及以上的日志信息资昧。
  1. [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)安全性岳守。
  1. 進(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)存泄漏嫩挤。
  1. 請求處理相關(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í)行時間過長的請求恰矩。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末记盒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子外傅,更是在濱河造成了極大的恐慌纪吮,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萎胰,死亡現(xiàn)場離奇詭異碾盟,居然都是意外死亡,警方通過查閱死者的電腦和手機技竟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門冰肴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事熙尉×撸” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵检痰,是天一觀的道長包归。 經(jīng)常有香客問我,道長攀细,這世上最難降的妖魔是什么箫踩? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮谭贪,結(jié)果婚禮上境钟,老公的妹妹穿的比我還像新娘。我一直安慰自己俭识,他們只是感情好慨削,可當(dāng)我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著套媚,像睡著了一般缚态。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上堤瘤,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天玫芦,我揣著相機與錄音,去河邊找鬼本辐。 笑死桥帆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的慎皱。 我是一名探鬼主播老虫,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼茫多!你這毒婦竟也來了祈匙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤天揖,失蹤者是張志新(化名)和其女友劉穎夺欲,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體今膊,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡洁闰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了万细。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赖钞,靈堂內(nèi)的尸體忽然破棺而出腰素,到底是詐尸還是另有隱情,我是刑警寧澤雪营,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布弓千,位于F島的核電站,受9級特大地震影響献起,放射性物質(zhì)發(fā)生泄漏洋访。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一谴餐、第九天 我趴在偏房一處隱蔽的房頂上張望姻政。 院中可真熱鬧,春花似錦岂嗓、人聲如沸汁展。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽食绿。三九已至,卻和暖如春公罕,著一層夾襖步出監(jiān)牢的瞬間器紧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工楼眷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留铲汪,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓摩桶,卻偏偏與公主長得像桥状,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子硝清,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容