Nginx 常見問題整理

1、Nginx 常見問題

  • 1、相同server_name多個(gè)虛擬主機(jī)優(yōu)先級(jí)訪問

    • 根據(jù)文件名順序優(yōu)先讀取。使用ip訪問的時(shí)候,也是根據(jù)文件名順序優(yōu)先讀取。
  • 2、location匹配優(yōu)先級(jí)

    • = 進(jìn)行普通字符精確匹配,也就是完全匹配。
    • ^ ~ 表示普通字符匹配,使用前綴匹配。
    • ~ \~* 表示正在執(zhí)行一個(gè)正則匹配();
    • ~* :為不區(qū)分大小寫匹配(可用正則表達(dá)式)
    • ~ :為區(qū)分大小寫匹配(可用正則表達(dá)式)
    • root目錄下邊添加 code1 , code2, code3三個(gè)文件夾。每個(gè)文件夾中存放一個(gè)html文件,并做不同的標(biāo)記。

    • 此時(shí)重啟Nginx,然后訪問https://www.heartmusicbeat.com/code1, 此時(shí)將會(huì)返回 code1所在的文件的html文件。

    • 然后注釋掉第一個(gè)精確匹配的location,再訪問 https://www.heartmusicbeat.com/code1 ,此時(shí)將返回code2所在的文件的html文件。由此可見,即使正則匹配到了,但是依舊會(huì)向下執(zhí)行,匹配優(yōu)先級(jí)更高的。

    • 然后注釋掉第三個(gè)匹配的location再訪問 https://www.heartmusicbeat.com/code1,此時(shí)將會(huì)返回 code3所在的文件的html文件。

  • 3、try_files使用

    • try_files的作用

      • 按順序檢查文件是否存在。

4、alias和root的使用區(qū)別

    1. 使用 alias 時(shí),目錄名后面一定要加” /”
    1. alias 可以指定任何名稱
    1. alias 在使用正則匹配時(shí),必須捕捉要匹配的內(nèi)容并在指定的內(nèi)容處使用。
    1. alias 只能位于 location 塊中。

5、如何傳遞用戶的真實(shí)IP地址

  • 場(chǎng)景如下:
    假設(shè)用戶經(jīng)過多層代理訪問后端服務(wù),其實(shí)我們是不知道用戶真實(shí)的IP地址的。
    那么我們需要和第一級(jí)代理約定,需要在頭信息中加上對(duì)應(yīng)的IP地址信息,那么后續(xù)的傳遞都將含有用戶真實(shí)的IP。

6、Nginx 常見的錯(cuò)誤碼

  • 403錯(cuò)誤

    • 403是很常見的錯(cuò)誤代碼,一般就是未授權(quán)被禁止訪問的意思。

    • 可能的原因有兩種:

      • Nginx程序用戶無權(quán)限訪問web目錄文件
      • Nginx需要訪問目錄,但是autoindex選項(xiàng)被關(guān)閉
    • 修復(fù)方法:

      • 授予Nginx程序用戶權(quán)限讀取web目錄文件
      • 設(shè)置autoindex目錄為on
  • 413錯(cuò)誤

    • 在上傳時(shí)Nginx返回了413錯(cuò)誤:“413 Request Entity Too Large”,這一般就是上傳文件大小超過Nginx配置引起。

    • 修復(fù)方法:

      • 在Nginx.conf增加client_max_body_size的設(shè)置,這個(gè)值默認(rèn)是1M,可以增加到8M以提高文件大小限制;
      • 如果運(yùn)行的是php,那么還要檢查php.ini,這個(gè)大小client_max_body_size要和php.ini中的如下值的最大值一致或者稍大,這樣就不會(huì)因?yàn)樘峤粩?shù)據(jù)大小不一致出現(xiàn)的錯(cuò)誤。
  • 502錯(cuò)誤

    • Nginx 502 Bad Gateway的含義是請(qǐng)求的PHP-CGI已經(jīng)執(zhí)行,但是由于某種原因(一般是讀取資源的問題)沒有執(zhí)行完畢而導(dǎo)致PHP-CGI進(jìn)程終止。一般來說Nginx 502 Bad Gateway和php-fpm.conf的設(shè)置有關(guān)。
    • 修復(fù)方法:
      • 1、查看FastCGI進(jìn)程是否已經(jīng)啟動(dòng)
      ps -aux | grep php-cgi
      
      • 2、檢查系統(tǒng)Fastcgi進(jìn)程運(yùn)行情況
  • 除了第一種情況,fastcgi進(jìn)程數(shù)不夠用、php執(zhí)行時(shí)間長(zhǎng)、或者是php-cgi進(jìn)程死掉也可能造成Nginx的502錯(cuò)誤。

  • 運(yùn)行以下命令判斷是否接近FastCGI進(jìn)程,如果fastcgi進(jìn)程數(shù)接近配置文件中設(shè)置的數(shù)值,表明worker進(jìn)程數(shù)設(shè)置太少。
netstat -anpo | grep "php-cgi" | wc -l
  • 3、FastCGI執(zhí)行時(shí)間過長(zhǎng)

    • 根據(jù)實(shí)際情況調(diào)高以下參數(shù)值
  • 504錯(cuò)誤

  • Nginx 504 Gateway Time-out的含義是所請(qǐng)求的網(wǎng)關(guān)沒有請(qǐng)求到,簡(jiǎn)單來說就是沒有請(qǐng)求到可以執(zhí)行的PHP-CGI。

  • Nginx 504 Gateway Time-out一般與Nginx.conf的設(shè)置有關(guān)。

  • 頭部太大這種情況可能是由于Nginx默認(rèn)的fastcgi進(jìn)程響應(yīng)的緩沖區(qū)太小造成的, 這將導(dǎo)致fastcgi進(jìn)程被掛起,如果你的fastcgi服務(wù)對(duì)這個(gè)掛起處理的不好,那么最后就極有可能導(dǎo)致504 Gateway Time-out。

  • 默認(rèn)的fastcgi進(jìn)程響應(yīng)的緩沖區(qū)是8K,可以調(diào)大以下參數(shù):

  • 此外,也可能是php-cgi的問題,需要修改php.ini的配置:

  • 將max_children由之前的10改為30,這樣操作是為了保證有充足的php-cgi進(jìn)程可以被使用。

  • 將request_terminate_timeout由之前的0秒改成60秒,這樣使php-cgi進(jìn)程處理腳本的超時(shí)時(shí)間提高到60秒,可以防止進(jìn)程被掛起以提高利用效率。

nginx “403 Forbidden” 錯(cuò)誤的原因及解決辦法

user root owner;

微信掃碼關(guān)注java架構(gòu),獲取Java面試題和架構(gòu)師相關(guān)題目和視頻。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評(píng)論 19 139
  • 配置運(yùn)行Nginx服務(wù)器用戶(組) 用于配置運(yùn)行Nginx服務(wù)器用戶(組)的指令是user,其語(yǔ)法格式為: use...
    吃瓜的東閱讀 4,681評(píng)論 0 41
  • 1.ngnix介紹 ngnix www服務(wù)軟件 俄羅斯人開發(fā) 開源 性能很高 本身是一款靜態(tài)WWW軟件 靜態(tài)小文件...
    逗比punk閱讀 2,233評(píng)論 1 6
  • I/O模型Nginx介紹Nginx的安裝和目錄結(jié)構(gòu)Nginx的配置Nginx的編譯安裝 一、I/O模型 (一)I/...
    哈嘍別樣閱讀 968評(píng)論 0 4
  • 對(duì)于mysql connector的jar包 5.1.7以后的 可以在jdbc url中增加rewriteBatc...
    語(yǔ)文報(bào)閱讀 1,951評(píng)論 0 49

友情鏈接更多精彩內(nèi)容