亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Nginx 配置文件備忘

wdzgege / 2570人閱讀

摘要:如對(duì)于請(qǐng)求,依次嘗試按照配置所表示的文件。這里是目錄,會(huì)繼續(xù)按照配置查找如等文件。在沒有更為精確的匹配符合的情況下,會(huì)進(jìn)入這一配置中,實(shí)際上相當(dāng)于缺省配置。

以下備忘 Nginx 中基礎(chǔ)配置的含義。

nginx.conf

/etc/nginx 中可以找到 nginx.conf 配置文件,其配置及注釋如下:

# 運(yùn)行 Nginx worker 進(jìn)程的用戶群組為 nginx
user  nginx;

# 工作進(jìn)程的數(shù)量,一般與 CPU 的核數(shù)相關(guān)
worker_processes  1;

# 錯(cuò)誤日志的目錄。最后一項(xiàng)為錯(cuò)誤日志的級(jí)別
error_log  /var/log/nginx/error.log warn;

# 保存主進(jìn)程的進(jìn)程 id 的位置
pid        /var/run/nginx.pid;

# 設(shè)置一個(gè)工作進(jìn)程可以連接的數(shù)量
events {
    worker_connections  1024;
}


http {
    # ...
}

有關(guān)錯(cuò)誤日志的級(jí)別可以參考:「Nginx error_log 錯(cuò)誤日志級(jí)別」。

http 模塊

nginx.conf 中包含一個(gè)重要模塊,其配置及注釋如下:

# --- nginx.conf ----

# 其他配置

http {
    # 這個(gè)文件告訴瀏覽器文件所屬的類型
    include       /etc/nginx/mime.types;
    
    # 設(shè)置了默認(rèn)的類型(默認(rèn)為二進(jìn)制)
    default_type  application/octet-stream;

    # 設(shè)置日志記錄的一種格式,main 為名字
    log_format  main  "$remote_addr - $remote_user [$time_local] "$request" "
                      "$status $body_bytes_sent "$http_referer" "
                      ""$http_user_agent" "$http_x_forwarded_for"";

    # 設(shè)置訪問日志的位置
    access_log  /var/log/nginx/access.log  main;

    # 是否使用這種方法傳輸數(shù)據(jù)
    sendfile        on;
    #tcp_nopush     on;

    # keepalive 長(zhǎng)連接延時(shí)
    keepalive_timeout  65;

    #gzip  on;

    # 包含的額外配置位置
    include /etc/nginx/conf.d/*.conf;
}

該段配置中有一些比較重要的部分:

mime.types

該文件為 /etc/nginx/mine.types,表示針對(duì)不同文件類型會(huì)返回給瀏覽器的 Content-Type 頭部信息,以下是該文件的部分內(nèi)容:

types {
    text/html                             html htm shtml;
    text/css                              css;
    text/xml                              xml;
    image/gif                             gif;
    image/jpeg                            jpeg jpg;
    application/javascript                js;
    application/atom+xml                  atom;
    application/rss+xml                   rss;
    
    # 其他內(nèi)容
}

有關(guān)這一部分的詳細(xì)信息可以查看:「Nginx -- mime.types」和「HTTP Content-Type」。

log_format

該項(xiàng)配置了日志記錄的格式,具體可以參考:「使用 log_format 為 Nginx 服務(wù)器設(shè)置更詳細(xì)的日志格式」。

server 模塊

由于在 nginx.conf 中存在下面這條配置,使得所有在該目錄下,文件名以 .conf 結(jié)尾的文件都會(huì)被當(dāng)作配置文件引入:

include /etc/nginx/conf.d/*.conf;

而在 /etc/nginx/conf.d/ 目錄下,提供了一個(gè) default.conf 文件,以下是該文件部分內(nèi)容及注釋:

# 每一個(gè) server 定義了一個(gè)虛擬主機(jī)
server {
    # 端口號(hào)
    listen       80;
    
    # 訪問的主機(jī)名
    server_name  localhost;

    #charset koi8-r;
    
    # 這里可以覆蓋 http 中的配置
    #access_log  /var/log/nginx/log/host.access.log  main;
    
    # 其他配置
}

在 server 模塊中,location 是非常重要的配置項(xiàng),我們可以使用它完成很多需求。

簡(jiǎn)單的請(qǐng)求匹配

我更傾向于把它稱為路由匹配,即根據(jù)請(qǐng)求的類型轉(zhuǎn)發(fā)到相應(yīng)的代碼中進(jìn)行處理,和路由器根據(jù)路由表轉(zhuǎn)發(fā)數(shù)據(jù)包的過程很是相似。

server {
    
    # 其他配置
    
    server_name my.app.dev;
    
    location / {
        # 匹配時(shí)轉(zhuǎn)發(fā)到的目錄
        root   /usr/share/nginx/html;
        
        # 如以 my.app.dev 訪問,則嘗試訪問 
        # my.app.dev/index.html 
        # 或 
        # my.app.dev/index.htm
        index  index.html index.htm;
    }
    
    # 其他配置
    
}

這是一個(gè)簡(jiǎn)單的配置,所有以 my.app.dev 發(fā)起到該主機(jī)的請(qǐng)求都會(huì)與這一配置匹配。如請(qǐng)求 my.app.dev/a.html 則相當(dāng)于訪問 /usr/share/nginx/html/a.html 文件(注意配置域名解析到該服務(wù)器),該路徑為 root 配置內(nèi)容。

正則匹配

當(dāng)然也可以使用正則表達(dá)式定義:

location ~* .(jpg|jpeg|gif|png)$ {
    root   /usr/share/nginx/static/images;
}

該配置表示對(duì)圖片類的靜態(tài)資源的轉(zhuǎn)發(fā),其中 .(jpg|jpeg|gif|png)$ 為正則內(nèi)容;

~* 表示請(qǐng)求不區(qū)分大小寫,關(guān)于此類規(guī)則可以參考:「Nginx location 匹配規(guī)則」。

反向代理

我們還可以進(jìn)行反向代理配置:

location /api {
    # 代理轉(zhuǎn)發(fā)
    proxy_pass http://api.app.dev;
    
    # 保留請(qǐng)求方的真實(shí) IP
    proxy_set_header X-Real-IP $remote_addr;
    
    # 追加代理 IP
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
}

在使用代理后,如果想讓代理后的服務(wù)器得到的請(qǐng)求地址仍是真實(shí)的客戶,而不是代理服務(wù)器,則需要增加上述配置的下面兩行。有關(guān)這二者的區(qū)別和更為詳細(xì)的信息可以分別參考:「X-Forwarded-For 和 X-Real-IP 的區(qū)別?」和「怎樣正確設(shè)置 remote_addr 和 x_forwarded_for」。

FastCGI

對(duì)于某些需要借助額外處理過程的文件,Nginx 需要將請(qǐng)求轉(zhuǎn)發(fā)給實(shí)現(xiàn)了 CGI 或 FastCGI 的進(jìn)程進(jìn)行處理。在 PHP 中即為 php-fpm:

location ~ .php$ {

    # 注意,Nginx 和 FastCGI 通信具有兩種形式,TCP 和 UNIX Socket 方式
    # 默認(rèn)為 socket 方式
    # fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    
    # 或使用 TCP 方式
    fastcgi_pass   127.0.0.1:9000;
    
    # 默認(rèn)索引文件
    fastcgi_index  index.php;
    
    # 額外的參數(shù):請(qǐng)求的腳本文件位置
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    
    # 引入額外的 FastCGI 配置
    include        fastcgi_params;
}

其中:fastcgi_pass 表示將該類請(qǐng)求轉(zhuǎn)發(fā)到哪個(gè)進(jìn)程,這里配置為 127.0.0.1:9000 是因?yàn)?php-fpm 默認(rèn)監(jiān)聽 9000 端口。

這里的 $document_root$fastcgi_script_name 分別表示 root 配置指定的位置及腳本名稱。二者連起來即為腳本文件的請(qǐng)求路徑。詳細(xì)信息可以參考「Nginx 內(nèi)置預(yù)定義變量」和「fastcgi_param 詳解 - CSDN」。

include fastcgi_params 為引入 /etc/nginx/fastcgi_params 文件。

地址重寫

又稱為偽靜態(tài),可以通過以下方式配置:

location / {
    index  index.php;
    try_files $uri $uri/ /index.php?$query_string;
}

try_files 后附帶三個(gè)參數(shù)(可以配置多個(gè),中間用空格分隔),對(duì)于一個(gè)請(qǐng)求,會(huì)依次嘗試這三者。如對(duì)于請(qǐng)求 my.app.dev/comments/1,依次嘗試:

my.app.dev/comments/1 按照 root 配置所表示的文件;

my.app.dev/comments/1/。這里是目錄,會(huì)繼續(xù)按照 index 配置查找如 index.html 等文件;

my.app.dev/index.php。注意,雖然轉(zhuǎn)發(fā)到這個(gè)文件,但請(qǐng)求的 url 仍是 my.app.dev/comments/1,一般在 index.php 中會(huì)有請(qǐng)求解析模塊專門進(jìn)行匹配。

一般地址重寫都是動(dòng)態(tài)語(yǔ)言的需求,所以地址重寫配置往往和 FastCGI 配置一同出現(xiàn)。

匹配順序

同路由表的匹配規(guī)則類似,請(qǐng)求的匹配大體上也遵循最長(zhǎng)匹配,具體規(guī)則如下(引用自:Nginx location 匹配規(guī)則):

= 前綴的指令嚴(yán)格匹配這個(gè)查詢。如果找到,停止搜索;

所有剩下的常規(guī)字符串,最長(zhǎng)的匹配。如果這個(gè)匹配使用^?前綴,搜索停止;

正則表達(dá)式,在配置文件中定義的順序;

如果第 3 條規(guī)則產(chǎn)生匹配的話,結(jié)果被使用。否則,使用第2條規(guī)則的結(jié)果。

默認(rèn)匹配

在配置了 location / {...} 后,由于所有請(qǐng)求都屬于這一格式。在沒有更為精確的匹配符合的情況下,會(huì)進(jìn)入這一配置中,實(shí)際上相當(dāng)于缺省配置。

當(dāng)然,我們也可以用以下方式配置一個(gè)默認(rèn)(缺省)的 server:

server {
    listen 80 default_server;
    root /default/root;
    #root return 444;
}

使用 default_server 標(biāo)注其為默認(rèn) server。這里也可以把 root /default/root 改為 root return 444,表示當(dāng)必須使用默認(rèn) server 時(shí),直接返回 444 HTTP 狀態(tài)碼。而又由于沒有這一狀態(tài)碼,瀏覽器中會(huì)直接顯示 網(wǎng)頁(yè)無(wú)法正常工作。

404 錯(cuò)誤問題

當(dāng)訪問已正確配置的地址卻出現(xiàn) 403 錯(cuò)誤時(shí),有可能是 SELinux 導(dǎo)致的。

先執(zhí)行以下命令:

getenforce

如果出現(xiàn) Enforcing 結(jié)果,則需要改變安全上下文:

chcon -Rt httpd_sys_content_t /your/web/dir

詳細(xì)內(nèi)容可以參考 「查看 SELinux 狀態(tài)及關(guān)閉 SELinux」 和 「Chcon 命令」。


參考

查看 SELinux 狀態(tài)及關(guān)閉 SELinux

Chcon 命令

Nginx error_log 錯(cuò)誤日志級(jí)別

Nginx -- mime.types

HTTP Content-Type

使用 log_format 為 Nginx 服務(wù)器設(shè)置更詳細(xì)的日志格式 - 博客園

nginx location 匹配規(guī)則

X-Forwarded-For 和 X-Real-IP 的區(qū)別? - segmentfault

怎樣正確設(shè)置 remote_addr 和 x_forwarded_for - CSDN

Nginx 內(nèi)置預(yù)定義變量

fastcgi_param 詳解 - CSDN

NGINX:Web 服務(wù)器 - 寧皓網(wǎng)

Ubuntu 16.04LTS LNMP環(huán)境配置 - 博客園

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/39531.html

相關(guān)文章

  • Nginx 支持單域名多 Vue 服務(wù)配置備忘

    摘要:最近開發(fā)時(shí),遇到需要使用同一域名承載多個(gè)前端項(xiàng)目的場(chǎng)景,具體需求如下訪問新版本前端項(xiàng)目訪問后端接口服務(wù)訪問默認(rèn)前端項(xiàng)目配置內(nèi)容注意的配置。此時(shí),可以通過對(duì)新版前端文件中的進(jìn)行配置,以規(guī)避這一問題注該方法僅適用于構(gòu)建的項(xiàng)目參考鏈接 最近開發(fā)時(shí),遇到需要使用同一域名承載多個(gè)前端項(xiàng)目的場(chǎng)景,具體需求如下: /v2 訪問新版本前端項(xiàng)目 /api 訪問后端 Spring Boot 接口服...

    zhichangterry 評(píng)論0 收藏0
  • Linode(Ubuntu 14.04 LTS)安裝Wordpress備忘

    摘要:主機(jī)選擇登錄主機(jī)操作系統(tǒng)升級(jí)操作系統(tǒng)升級(jí)軟件升級(jí)刪除升級(jí)包設(shè)置主機(jī)時(shí)區(qū)設(shè)置主機(jī)名更新主機(jī)名綁定域名創(chuàng)建新的主機(jī)用戶安裝至此可以嘗試打開下網(wǎng)站看看配置修改為主機(jī)登錄用戶名進(jìn)程數(shù)增加設(shè)置上傳文件大小檢測(cè)配置信息 主機(jī)選擇 Ubuntu 14.04 LTS 登錄主機(jī) ssh root@xx.xx.xx.xx 操作系統(tǒng)升級(jí) apt-get update 操作系統(tǒng)升級(jí)apt-get upgrad...

    chinafgj 評(píng)論0 收藏0
  • Linode(Ubuntu 14.04 LTS)安裝Wordpress備忘

    摘要:主機(jī)選擇登錄主機(jī)操作系統(tǒng)升級(jí)操作系統(tǒng)升級(jí)軟件升級(jí)刪除升級(jí)包設(shè)置主機(jī)時(shí)區(qū)設(shè)置主機(jī)名更新主機(jī)名綁定域名創(chuàng)建新的主機(jī)用戶安裝至此可以嘗試打開下網(wǎng)站看看配置修改為主機(jī)登錄用戶名進(jìn)程數(shù)增加設(shè)置上傳文件大小檢測(cè)配置信息 主機(jī)選擇 Ubuntu 14.04 LTS 登錄主機(jī) ssh root@xx.xx.xx.xx 操作系統(tǒng)升級(jí) apt-get update 操作系統(tǒng)升級(jí)apt-get upgrad...

    everfly 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<