欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nginx的配置文件結(jié)構(gòu)和各種配置指令

 更新時間:2024年03月26日 09:52:32   作者:lww愛學(xué)習(xí)  
Nginx是一款高性能的Web服務(wù)器和反向代理服務(wù)器,常常被用作Web服務(wù)器、負(fù)載均衡器、反向代理和緩存服務(wù)器等,本文將詳細(xì)介紹Nginx的配置文件結(jié)構(gòu)和各種配置指令,幫助你理解和正確配置Nginx?服務(wù)器

Nginx(“engine x”)是一款高性能的Web服務(wù)器和反向代理服務(wù)器,它采用事件驅(qū)動的異步結(jié)構(gòu),具有內(nèi)存占用少、穩(wěn)定性高、能夠處理大量的并發(fā)請求,具有高效和低資源消耗等特點。 Nginx常常被用作Web服務(wù)器、負(fù)載均衡器、反向代理和緩存服務(wù)器等。本文將詳細(xì)介紹 Nginx 的配置文件結(jié)構(gòu)和各種配置指令,幫助你理解和正確配置 Nginx 服務(wù)器。

1. Nginx 配置文件的位置和結(jié)構(gòu)

在大多數(shù) Linux 發(fā)行版中,Nginx 的配置文件位于 /etc/nginx 目錄下,主要有以下幾個文件和目錄:

nginx.conf:主配置文件,包含全局的配置指令和引入其他配置文件的指令。
conf.d:配置文件目錄,用于存放分散的配置片段,以 .conf 結(jié)尾。
sites-available:虛擬主機配置文件目錄,用于存放每個虛擬主機的配置文件。
sites-enabled:啟用的虛擬主機配置文件目錄的符號鏈接,通過鏈接到 sites-available 下的配置文件來啟用虛擬主機。

Nginx 的配置文件采用了基于塊的結(jié)構(gòu),使用大括號 {} 來表示塊的開始和結(jié)束。下面是一個簡單的 nginx.conf 示例:

worker_processes auto;
events {
    worker_connections 1024;
}
http {
    include mime.types;
    default_type application/octet-stream;
    server {
        listen 80;
        server_name example.com;
        root /var/www/html;
        location / {
            index index.html;
        }
    }
}

配置文件的結(jié)構(gòu)分為全局塊、events 塊和 http 塊。全局塊包含了全局的配置指令,events 塊用于配置與連接處理相關(guān)的參數(shù),http 塊則包含了 HTTP 服務(wù)器的配置。

2. 常用的全局配置指令

2.1 worker_processes

worker_processes 指定了 Nginx 啟動的 worker 進(jìn)程數(shù)量,一般設(shè)置為 auto,表示根據(jù) CPU 核心數(shù)量自動分配。

2.2 events

events 塊用于配置與連接處理相關(guān)的參數(shù),常用的配置指令包括:

worker_connections:指定每個 worker 進(jìn)程的最大連接數(shù)。
multi_accept:啟用一次性接受多個連接。

2.3 http

http 塊用于配置 HTTP 服務(wù)器的相關(guān)參數(shù),常用的配置指令包括:

include:引入其他配置文件,可以使用通配符 *。
default_type:設(shè)置默認(rèn)的 MIME 類型。
access_log:指定訪問日志文件的路徑和格式。
error_log:指定錯誤日志文件的路徑和級別。

3. 虛擬主機配置

Nginx 支持虛擬主機,允許在單個服務(wù)器上運行多個網(wǎng)站。每個虛擬主機都有自己的配置文件,存放在 sites-available 目錄下,并通過符號鏈接啟用。

下面是一個虛擬主機配置的示例:

server {
    listen 80;
    server_name example.com;
    root /var/www/example;
    location / {
        index index.html;
    }
    location /images/ {
        alias /var/www/images/;
    }
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

在虛擬主機配置中,常用的指令包括:

listen:指定監(jiān)聽的端口和 IP 地址。
server_name:指定虛擬主機的域名。
root:指定網(wǎng)站的根目錄。
location:用于匹配 URL,并指定相應(yīng)的處理規(guī)則。

4. URL 匹配和重定向

Nginx 的 URL 匹配功能非常強大,可以根據(jù)不同的 URL 進(jìn)行不同的處理。下面是一些常見的 URL 匹配和重定向配置示例:

location / {
    index index.html;
}
location /blog/ {
    alias /var/www/blog/;
}
location ~ ^/user/(\d+)/profile$ {
    rewrite ^/user/(\d+)/profile$ /profile.php?id=$1 last;
}
location = /about {
    return 301 /about-us;
}
location ~* \.(jpg|jpeg|png|gif)$ {
    expires 1d;
}

在上面的示例中,我們使用了不同的 location 指令來匹配不同的 URL,并指定相應(yīng)的處理規(guī)則。其中:

location / 匹配根路徑,指定了默認(rèn)的索引文件為 index.html。
location /blog/ 匹配以 /blog/ 開頭的 URL,使用 alias 指令指定了對應(yīng)的文件目錄。
location ~ ^/user/(\d+)/profile$ 使用正則表達(dá)式匹配類似 /user/123/profile 的 URL,并使用 rewrite 指令將 URL 重定向到 /profile.php?id=$1。
location = /about 匹配完全相等的 URL /about,并使用 return 指令將請求重定向到 /about-us。
location ~* \.(jpg|jpeg|png|gif)$ 使用正則表達(dá)式匹配以 .jpg、.jpeg、.png 或 .gif 結(jié)尾的 URL,并使用 expires 指令設(shè)置緩存過期時間。

5. 反向代理和負(fù)載均衡

Nginx 作為反向代理服務(wù)器,可以將請求轉(zhuǎn)發(fā)給后端服務(wù)器,并支持負(fù)載均衡。下面是一個反向代理和負(fù)載均衡的配置示例:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }
    server {
        listen 80;
        server_name example.com;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
}

在上面的示例中,我們使用 upstream 指令定義了后端服務(wù)器的列表。在 server 塊中,使用 proxy_pass 指令將請求轉(zhuǎn)發(fā)給后端服務(wù)器,并使用 proxy_set_header 指令設(shè)置請求頭。

6. HTTPS 配置

Nginx 支持 HTTPS,可以通過配置 SSL 證書來啟用加密連接。下面是一個簡單的 HTTPS 配置示例:

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;

    location / {
        root /var/www/html;
        index index.html;
    }
}

在上面的示例中,我們使用 listen 指令指定了監(jiān)聽的端口為 443,并使用 ssl 參數(shù)啟用 SSL。使用 ssl_certificate 和 ssl_certificate_key 指令指定了 SSL 證書和私鑰的路徑。

7. 配置文件的測試和重載

在修改 Nginx 配置文件后,可以使用以下命令進(jìn)行測試和重載配置:

nginx -t:測試配置文件的語法是否正確。
nginx -s reload:重載配置文件,不中斷正在處理的連接。

8. 動態(tài)模塊和靜態(tài)模塊

Nginx 支持動態(tài)模塊和靜態(tài)模塊的加載。靜態(tài)模塊是在編譯時與 Nginx 一起構(gòu)建的,而動態(tài)模塊是在運行時加載的??梢酝ㄟ^以下方式來加載模塊:

靜態(tài)模塊:在編譯 Nginx 時,使用 --with 參數(shù)指定需要包含的模塊。
動態(tài)模塊:在 nginx.conf 中使用 load_module 指令加載模塊。
例如,要加載 ngx_http_geoip_module 模塊,可以在 http 塊中添加以下配置:

load_module modules/ngx_http_geoip_module.so;

9. Gzip 壓縮

Nginx 支持使用 Gzip 壓縮來減小傳輸?shù)臄?shù)據(jù)量,提高性能??梢允褂靡韵屡渲脕韱⒂?Gzip 壓縮:

http {
    gzip on;
    gzip_types text/plain text/css application/json;
}

在上面的示例中,gzip on; 啟用了 Gzip 壓縮功能,gzip_types 指定了需要進(jìn)行壓縮的 MIME 類型。

10. 緩存

Nginx 可以通過緩存來提高響應(yīng)速度和減輕后端服務(wù)器的負(fù)載??梢允褂靡韵屡渲脕韱⒂镁彺妫?/p>

http {
    proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m;
    
    server {
        location / {
            proxy_cache my_cache;
            proxy_cache_valid 200 304 10m;
            proxy_cache_valid any 1m;
            proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
        }
    }
}

在上面的示例中,proxy_cache_path 指定了緩存路徑和容量,proxy_cache 啟用了緩存,proxy_cache_valid 設(shè)置了緩存的有效期,proxy_cache_use_stale 指定了在后端服務(wù)器不可用時使用過期的緩存。

11. 日志記錄

Nginx 提供了靈活的日志記錄功能,可以記錄訪問日志、錯誤日志和其他自定義日志。以下是一些常見的日志記錄配置示例:

http {
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    server {
        access_log /var/log/nginx/example.access.log;
        error_log /var/log/nginx/example.error.log;

        location / {
            log_format custom_format '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent"';

            access_log /var/log/nginx/example.custom.log custom_format;
        }
    }
}

在上面的示例中,使用 access_log 和 error_log 指令分別設(shè)置了默認(rèn)的訪問日志和錯誤日志路徑。在特定的 server 塊中,可以使用不同的日志路徑和自定義日志格式。

12. 安全性配置

Nginx 提供了一些安全性配置指令,以增強服務(wù)器的安全性。以下是一些常見的安全性配置示例:

http {
    server_tokens off;
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-XSS-Protection "1; mode=block";
    
    server {
        location / {
            deny 192.168.1.1;
            allow 192.168.1.0/24;
            auth_basic "Restricted Content";
            auth_basic_user_file /path/to/.htpasswd;
        }
    }
}

在上面的示例中,server_tokens off; 禁用了服務(wù)器版本號的顯示,add_header 指令添加了一些常見的安全性響應(yīng)頭。在特定的 location 塊中,使用 deny 和 allow指令可以限制訪問的 IP 地址范圍,auth_basic 和 auth_basic_user_file 配置了基本身份驗證。

相關(guān)文章

  • nginx日志中添加請求的response日志(推薦)

    nginx日志中添加請求的response日志(推薦)

    這篇文章主要介紹了nginx日志中添加請求的response日志,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-05-05
  • 隱藏Nginx版本號的方法小結(jié)

    隱藏Nginx版本號的方法小結(jié)

    默認(rèn)情況下,Nginx 會在響應(yīng)頭里暴露版本號信息,這無疑給潛在的攻擊者提供了便利,畢竟,知道了版本號,就可以針對性地尋找漏洞進(jìn)行攻擊,為了讓自己的服務(wù)器更安全,本文給大家介紹了如何隱藏 Nginx 的版本號,需要的朋友可以參考下
    2025-02-02
  • 基于Nginx禁止指定IP、國外IP訪問我的網(wǎng)站

    基于Nginx禁止指定IP、國外IP訪問我的網(wǎng)站

    這篇文章主要介紹了用Nginx禁止指定IP、國外IP訪問我的網(wǎng)站,想要實現(xiàn)這個功能方法有很多種,這里基于 Nginx 的 ngx_http_geoip2 模塊來禁止國外 IP 訪問網(wǎng)站,需要的朋友可以參考下
    2022-05-05
  • Nginx?Proxy?Manager配置Web?WAF應(yīng)用防火墻

    Nginx?Proxy?Manager配置Web?WAF應(yīng)用防火墻

    Nginx?Proxy?Manager是一款功能強大的開源軟件,配置Web應(yīng)用防火墻,可以防止常見的web攻擊,本文就來介紹一下Nginx?Proxy?Manager配置Web?WAF應(yīng)用防火墻,感興趣的可以了解一下
    2025-02-02
  • Nginx代理接口訪問返回404的實現(xiàn)示例

    Nginx代理接口訪問返回404的實現(xiàn)示例

    因為不同業(yè)務(wù)系統(tǒng)間有接口調(diào)用,存在跨域問題,為了解決同源策略,需要將接口通過nginx去轉(zhuǎn)發(fā),本文主要介紹了Nginx代理接口訪問返回404的實現(xiàn)示例,感興趣的可以了解一下
    2024-06-06
  • 在Nginx中實現(xiàn)URL重寫與重定向

    在Nginx中實現(xiàn)URL重寫與重定向

    Nginx 的 **URL 重寫(Rewrite)**功能允許你根據(jù)請求的 URL 動態(tài)地修改請求路徑或進(jìn)行重定向,本文將詳細(xì)介紹如何在 Nginx 中實現(xiàn) URL 重寫,并給出一些常見的實際場景,需要的朋友可以參考下
    2025-01-01
  • nginx 部署 vue 項目找不到j(luò)s css文件的解決方法

    nginx 部署 vue 項目找不到j(luò)s css文件的解決方法

    這篇文章主要介紹了nginx 部署 vue 項目找不到j(luò)s css文件的解決方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • 通過Nginx實現(xiàn)前端與后端的協(xié)同部署

    通過Nginx實現(xiàn)前端與后端的協(xié)同部署

    在現(xiàn)代 web 開發(fā)中,前端與后端的協(xié)同部署是一個關(guān)鍵問題,一個高效的部署策略不僅能提升用戶體驗,還能簡化開發(fā)流程,今天,我們就來探討如何利用 Nginx 實現(xiàn)前端與后端的協(xié)同部署,需要的朋友可以參考下
    2025-03-03
  • 制作能在nginx和IIS中使用的ssl證書

    制作能在nginx和IIS中使用的ssl證書

    現(xiàn)在的后端開發(fā),動不動就是需要https,或者說是需要ssl證書,既然沒有正版的證書,那么我們只能自己制作ssl的證書了。 證書的制作采用的是openssl工具,如果沒有,可以自行安裝下,因為筆者是在linux(ubuntu)下制作,所以一般是使用包管理工具(apt)安裝好了的
    2021-06-06
  • Nginx配置http和https的實現(xiàn)步驟

    Nginx配置http和https的實現(xiàn)步驟

    Nginx是使用最多的代理服務(wù)器之一,本文主要介紹了Nginx配置http和https的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03

最新評論