溫馨提示×

LNMP中Nginx如何設置

小樊
42
2025-09-26 23:28:36
欄目: 編程語言

LNMP環境中Nginx的核心配置指南

在LNMP(Linux+Nginx+MySQL+PHP)架構中,Nginx作為Web服務器,主要負責處理HTTP請求、轉發PHP請求至PHP-FPM、提供靜態文件服務等。以下是Nginx的具體配置步驟及關鍵說明:

1. 安裝Nginx

根據Linux發行版選擇對應命令安裝:

  • Debian/Ubuntu
    sudo apt update && sudo apt install nginx -y
    
  • CentOS/RHEL
    sudo yum install epel-release && sudo yum install nginx -y
    

安裝完成后,啟動Nginx并設置開機自啟:

sudo systemctl start nginx
sudo systemctl enable nginx

通過訪問服務器IP地址,確認Nginx默認頁面顯示正常。

2. 配置Nginx虛擬主機(核心步驟)

虛擬主機用于托管多個域名/網站。Nginx通過sites-available(存放配置文件)和sites-enabled(存放啟用配置的符號鏈接)目錄管理虛擬主機。

(1)創建虛擬主機配置文件

以域名example.com為例,創建配置文件:

sudo nano /etc/nginx/sites-available/example.com

寫入以下基礎配置(需根據實際情況調整):

server {
    listen 80;
    server_name example.com www.example.com;  # 域名(可多個,空格分隔)
    root /var/www/example.com;                # 網站根目錄(需手動創建)
    index index.php index.html index.htm;     # 默認索引文件

    # 靜態文件處理:嘗試匹配文件,不存在則返回404
    location / {
        try_files $uri $uri/ =404;
    }

    # PHP處理:轉發至PHP-FPM(關鍵配置)
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;    # 包含FastCGI參數
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;  # PHP-FPM socket路徑(需與PHP版本匹配)
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  # 傳遞腳本路徑
        include fastcgi_params;               # 包含通用FastCGI參數
    }

    # 禁止訪問.htaccess等敏感文件
    location ~ /\.ht {
        deny all;
    }
}

說明

  • server_name:必須與域名解析一致(需提前配置DNS解析至服務器IP);
  • root:網站文件的存儲路徑,需確保Nginx用戶(通常為www-data)有讀寫權限;
  • fastcgi_pass:指向PHP-FPM的socket文件(路徑可通過sudo find / -name "*.sock"查找)。
(2)啟用虛擬主機

創建符號鏈接,將配置文件鏈接至sites-enabled目錄:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
(3)測試并重載配置

測試配置文件語法(無錯誤則繼續):

sudo nginx -t

重載Nginx以應用更改:

sudo systemctl reload nginx

3. 配置PHP-FPM聯動

Nginx本身不處理PHP代碼,需通過PHP-FPM(FastCGI進程管理器)執行PHP腳本。

(1)安裝PHP-FPM及擴展
  • Debian/Ubuntu
    sudo apt install php-fpm php-mysql -y
    
  • CentOS/RHEL
    sudo yum install php php-fpm php-mysqlnd -y
    
(2)調整PHP-FPM配置

編輯PHP-FPM的pool配置文件(通常位于/etc/php/8.2/fpm/pool.d/www.conf):

sudo nano /etc/php/8.2/fpm/pool.d/www.conf

找到listen指令,確保與Nginx中的fastcgi_pass路徑一致(如unix:/var/run/php/php8.2-fpm.sock)。

(3)重啟PHP-FPM
sudo systemctl restart php8.2-fpm
sudo systemctl enable php8.2-fpm

4. 配置MySQL數據庫

Nginx需連接MySQL存儲動態數據(如WordPress、Laravel等)。

(1)安裝MySQL
  • Debian/Ubuntu
    sudo apt install mysql-server -y
    
  • CentOS/RHEL
    sudo yum install mariadb-server -y
    
(2)運行安全腳本
sudo mysql_secure_installation

按提示設置root密碼、移除匿名用戶、禁止root遠程登錄等。

(3)創建數據庫及用戶

登錄MySQL:

sudo mysql -u root -p

執行以下SQL命令:

CREATE DATABASE example_db;                  -- 創建數據庫
CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'StrongPassword123';  -- 創建用戶
GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost';        -- 授權
FLUSH PRIVILEGES;                            -- 刷新權限
EXIT;

5. 關鍵優化與安全配置

(1)設置防火墻

允許HTTP(80)和HTTPS(443)流量(以UFW為例):

sudo ufw allow 'Nginx Full'
sudo ufw enable
(2)配置HTTPS(可選但推薦)

使用Let’s Encrypt免費獲取SSL證書:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com

按提示完成證書安裝,Nginx會自動配置HTTPS重定向。

(3)性能優化
  • 啟用Gzip壓縮:在http塊中添加:
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    
  • 靜態文件緩存:在location塊中添加:
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;
        add_header Cache-Control "public";
    }
    
  • 調整worker進程:在nginx.confevents塊中,設置worker_connections為1024(根據服務器內存調整)。

6. 驗證配置

  • 靜態網站:在/var/www/example.com目錄下放置index.html,訪問http://example.com應顯示頁面內容;
  • PHP動態網站:在/var/www/example.com目錄下創建info.php,內容為<?php phpinfo(); ?>,訪問http://example.com/info.php應顯示PHP信息頁面(確認PHP-FPM聯動正常)。

通過以上步驟,即可在LNMP環境中完成Nginx的基礎配置。根據實際需求,可進一步調整緩存策略、負載均衡、反向代理等功能。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女