最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx 基本使用和高級用法示例詳解

 更新時間:2025年10月21日 11:17:20   作者:木易 士心  
Nginx是一個高性能的 HTTP 和反向代理服務(wù)器,具有占用內(nèi)存少、并發(fā)能力強(qiáng)等特點(diǎn),廣泛應(yīng)用于 Web 服務(wù)、負(fù)載均衡、靜態(tài)資源處理和反向代理等場景,本文介紹Nginx 基本使用和高級用法,感興趣的朋友一起看看吧

Nginx 基本使用和高級用法詳解

一、Nginx 簡介

Nginx 是一個高性能的 HTTP 和反向代理服務(wù)器,具有占用內(nèi)存少、并發(fā)能力強(qiáng)等特點(diǎn),廣泛應(yīng)用于 Web 服務(wù)、負(fù)載均衡、靜態(tài)資源處理和反向代理等場景。

二、基本安裝與使用

1. 安裝 Nginx

Ubuntu/Debian
sudo apt update
sudo apt install nginx
CentOS/RHEL
sudo yum install nginx
# 或
sudo dnf install nginx

2. 基本操作命令

# 啟動
sudo systemctl start nginx
# 停止
sudo systemctl stop nginx
# 重啟
sudo systemctl restart nginx
# 重新加載配置(不中斷服務(wù))
sudo systemctl reload nginx
# 查看狀態(tài)
sudo systemctl status nginx
# 開機(jī)自啟
sudo systemctl enable nginx

三、配置文件結(jié)構(gòu)

1. 主要配置文件目錄結(jié)構(gòu)

/etc/nginx/
├── nginx.conf              # 主配置文件
├── conf.d/                 # 額外配置文件目錄
├── sites-available/        # 可用站點(diǎn)配置文件
└── sites-enabled/          # 已啟用站點(diǎn)配置文件(軟鏈接指向 sites-available)

2. 基本配置示例(/etc/nginx/nginx.conf)

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
    worker_connections 1024;
    use epoll;
    multi_accept on;
}
http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
    access_log /var/log/nginx/access.log main;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

四、虛擬主機(jī)配置

1. 基本虛擬主機(jī)配置

# /etc/nginx/sites-available/example.com
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
    # 靜態(tài)資源緩存優(yōu)化
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
}

2. 啟用站點(diǎn)

# 創(chuàng)建軟鏈接啟用站點(diǎn)
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
# 測試配置是否正確
sudo nginx -t
# 重新加載配置
sudo systemctl reload nginx

五、高級配置技巧

1. 反向代理配置

server {
    listen 80;
    server_name api.example.com;
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        # 超時設(shè)置
        proxy_connect_timeout 30s;
        proxy_send_timeout 30s;
        proxy_read_timeout 30s;
        # 緩沖設(shè)置
        proxy_buffering on;
        proxy_buffer_size 4k;
        proxy_buffers 8 4k;
    }
}

2. 負(fù)載均衡

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

3. SSL/TLS 配置

server {
    listen 443 ssl http2;
    server_name example.com;
    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;
    # SSL 安全設(shè)置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    # HSTS 強(qiáng)制 HTTPS
    add_header Strict-Transport-Security "max-age=63072000" always;
    root /var/www/example.com;
    index index.html;
}

4. 緩存配置

代理緩存
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g 
                 inactive=60m use_temp_path=off;
server {
    location / {
        proxy_cache my_cache;
        proxy_pass http://backend;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
        add_header X-Cache-Status $upstream_cache_status;
    }
}
靜態(tài)資源緩存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
}

5. 安全配置

# 隱藏版本號
server_tokens off;
# 安全響應(yīng)頭
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;
# 上傳大小限制
client_max_body_size 10m;
# 限制非法請求方法
if ($request_method !~ ^(GET|POST|HEAD)$) {
    return 405;
}

6. 限流配置

# 定義限流區(qū)域
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
limit_req_zone $binary_remote_addr zone=login:10m rate=2r/m;
server {
    location /api/ {
        limit_req zone=api burst=20 nodelay;
        proxy_pass http://backend;
    }
    location /login {
        limit_req zone=login burst=5;
        proxy_pass http://backend;
    }
}

7. URL 重寫和重定向

server {
    # 強(qiáng)制跳轉(zhuǎn) HTTPS
    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }
    # 路徑重定向
    location /old-path {
        return 301 /new-path;
    }
    # 去除 .html 擴(kuò)展名
    location / {
        try_files $uri $uri.html $uri/ =404;
    }
    # RESTful URL 重寫
    location /api/v1/users {
        rewrite ^/api/v1/users/(.*)$ /api/v1/users?id=$1 last;
    }
}

8. Gzip 壓縮

gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_proxied any;
gzip_comp_level 6;
gzip_types
    text/plain
    text/css
    text/xml
    text/javascript
    application/json
    application/javascript
    application/xml+rss
    application/atom+xml
    image/svg+xml;

六、性能優(yōu)化配置

1. 連接優(yōu)化

events {
    worker_connections 4096;
    use epoll;
    multi_accept on;
}
http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    keepalive_requests 1000;
    # 文件描述符緩存
    open_file_cache max=200000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;
}

2. 工作進(jìn)程優(yōu)化

worker_processes auto;
worker_cpu_affinity auto;
# 提高文件描述符限制
worker_rlimit_nofile 65535;

七、日志配置

1. 自定義日志格式

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" "$http_x_forwarded_for" '
                'rt=$request_time uct="$upstream_connect_time" '
                'uht="$upstream_header_time" urt="$upstream_response_time"';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;

2. 日志分割腳本(rotate_nginx_logs.sh)

#!/bin/bash
# rotate_nginx_logs.sh
LOG_DIR="/var/log/nginx"
DATE=$(date -d "yesterday" +%Y-%m-%d)
mv $LOG_DIR/access.log $LOG_DIR/access.$DATE.log
mv $LOG_DIR/error.log $LOG_DIR/error.$DATE.log
# 通知 Nginx 重新打開日志文件
kill -USR1 $(cat /var/run/nginx.pid)
# 壓縮7天前的日志
find $LOG_DIR -name "*.log" -mtime +7 -exec gzip {} \;

提示:可配合 cron 定時執(zhí)行日志輪轉(zhuǎn)。

八、監(jiān)控和調(diào)試

1. 狀態(tài)頁面配置

server {
    listen 8080;
    server_name localhost;
    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
}

訪問 http://localhost:8080/nginx_status 可查看連接狀態(tài)。

2. 調(diào)試常用命令

# 測試配置語法
sudo nginx -t
# 打印完整配置(含 include)
sudo nginx -T
# 查看 Nginx 編譯參數(shù)和模塊
nginx -V
# 實(shí)時查看日志
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
# 壓力測試(Apache Bench)
ab -n 1000 -c 100 http://example.com/

九、Docker 中的 Nginx

1. Dockerfile 示例

FROM nginx:alpine
COPY nginx.conf /etc/nginx/nginx.conf
COPY sites/ /etc/nginx/sites-available/
COPY html/ /usr/share/nginx/html/
RUN ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]

2. Docker Compose 示例

version: '3.8'
services:
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./sites:/etc/nginx/sites-available
      - ./html:/usr/share/nginx/html
      - ./ssl:/etc/ssl
    networks:
      - webnet
networks:
  webnet:
    driver: bridge

結(jié)語

本指南涵蓋了 Nginx 的 基礎(chǔ)安裝、虛擬主機(jī)、反向代理、負(fù)載均衡、SSL 配置、緩存、安全加固、限流、URL 重寫、Gzip 壓縮、性能調(diào)優(yōu)、日志管理、監(jiān)控調(diào)試 以及 Docker 部署 等核心內(nèi)容,適用于構(gòu)建高可用、高性能、安全的 Web 服務(wù)架構(gòu)。

建議在生產(chǎn)環(huán)境中結(jié)合具體業(yè)務(wù)場景進(jìn)行配置優(yōu)化,并定期審查安全策略和性能指標(biāo)。

到此這篇關(guān)于Nginx 基本使用和高級用法詳解的文章就介紹到這了,更多相關(guān)nginx 安裝使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx 啟動、停止、重啟、升級操作命令收集

    Nginx 啟動、停止、重啟、升級操作命令收集

    也許你不知道什么是Nginx,Nginx是一個WEB服務(wù)器,如IIS那樣,現(xiàn)在好多門戶都在使用了Nginx作為WEB服務(wù)器了,Nginx在Linux系統(tǒng)下跑很優(yōu)秀,強(qiáng)過其它的WEB服務(wù)端,還可以做負(fù)載均衡,很不錯吧。
    2010-10-10
  • Nginx $remote_addr和$proxy_add_x_forwarded_for變量的實(shí)現(xiàn)

    Nginx $remote_addr和$proxy_add_x_forwarded_for變量的實(shí)現(xiàn)

    本文主要介紹了Nginx $remote_addr和$proxy_add_x_forwarded_for變量的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • nginx將https協(xié)議反向代理到http協(xié)議請求上的實(shí)現(xiàn)

    nginx將https協(xié)議反向代理到http協(xié)議請求上的實(shí)現(xiàn)

    本文主要介紹了nginx將https協(xié)議反向代理到http協(xié)議請求上的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • nginx利用ctx實(shí)現(xiàn)數(shù)據(jù)共享、修改上下文功能

    nginx利用ctx實(shí)現(xiàn)數(shù)據(jù)共享、修改上下文功能

    這篇文章主要給大家介紹了關(guān)于nginx利用ctx實(shí)現(xiàn)數(shù)據(jù)共享、修改上下文功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Nginx結(jié)合Openresty通過Lua+Redis實(shí)現(xiàn)動態(tài)封禁IP

    Nginx結(jié)合Openresty通過Lua+Redis實(shí)現(xiàn)動態(tài)封禁IP

    為了封禁某些爬蟲或者惡意用戶對服務(wù)器的請求,我們需要建立一個動態(tài)的 IP 黑名單,本文主要介紹了Nginx結(jié)合Openresty通過Lua+Redis實(shí)現(xiàn)動態(tài)封禁IP,感興趣的可以了解一下
    2023-11-11
  • 詳解Nginx限流配置

    詳解Nginx限流配置

    本文以示例的形式,由淺入深講解Nginx限流相關(guān)配置,是對簡略的官方文檔的積極補(bǔ)充,感興趣的朋友跟隨小編一起看看吧
    2019-09-09
  • Linux 系統(tǒng) nginx 服務(wù)器安裝及負(fù)載均衡配置詳解

    Linux 系統(tǒng) nginx 服務(wù)器安裝及負(fù)載均衡配置詳解

    nginx(engine x) 是一個 高性能 的 HTTP 和 反向代理 服務(wù)器、郵件代理服務(wù)器以及通用的 TCP/UDP 代理服務(wù)器。這篇文章主要介紹了Linux 系統(tǒng) nginx 服務(wù)器安裝及負(fù)載均衡配置詳解,需要的朋友可以參考下
    2019-07-07
  • 討論nginx?location?順序問題

    討論nginx?location?順序問題

    在有一次配置時發(fā)現(xiàn),請求?uri?明明是符合了前綴匹配?^~?規(guī)則,但?nginx?卻沒有使用,這讓我對上述結(jié)論產(chǎn)生了疑惑。后續(xù)通過調(diào)研、實(shí)踐后發(fā)現(xiàn),上述結(jié)論可以說對,但也不對,是不是更疑惑了?沒關(guān)系,看完這篇文章你就知道我為什么會這樣說了
    2022-05-05
  • Nginx限流觸發(fā)原因排查及前端優(yōu)化方案

    Nginx限流觸發(fā)原因排查及前端優(yōu)化方案

    在日常項(xiàng)目開發(fā)中,為保障后端服務(wù)穩(wěn)定性,通常會為接口配置Nginx限流策略,但實(shí)際應(yīng)用中常出現(xiàn)一種情況:已實(shí)現(xiàn)前端并發(fā)控制,卻仍頻繁觸發(fā)限流規(guī)則,本文結(jié)合近期項(xiàng)目實(shí)戰(zhàn),詳細(xì)拆解Nginx限流日志、剖析觸發(fā)根源,需要的朋友可以參考下
    2026-02-02
  • Nginx中l(wèi)ocation匹配以及rewrite重寫跳轉(zhuǎn)詳解

    Nginx中l(wèi)ocation匹配以及rewrite重寫跳轉(zhuǎn)詳解

    訪問重寫 rewrite 是 Nginx HTTP 請求處理過程中的一個重要功能,下面這篇文章主要給大家介紹了Nginx中l(wèi)ocation匹配以及rewrite重寫跳轉(zhuǎn)的相關(guān)資料,需要的朋友可以參考下
    2022-03-03

最新評論

西宁市| 弋阳县| 新乐市| 鄄城县| 大竹县| 行唐县| 柳林县| 靖西县| 高雄县| 阜新市| 望江县| 忻州市| 乌兰浩特市| 扶风县| 陆川县| 玉林市| 泰来县| 云浮市| 杭锦后旗| 永和县| 加查县| 伊吾县| 宣化县| 渝中区| 新野县| 唐海县| 忻城县| 兴和县| 凉山| 天全县| 孝义市| 宜都市| 榆中县| 桦南县| 千阳县| 金寨县| 彰化县| 元氏县| 南昌县| 马龙县| 鞍山市|