溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

LNMP架構中Nginx如何配置虛擬主機

發布時間:2021-12-07 14:53:33 來源:億速云 閱讀:203 作者:小新 欄目:云計算
# LNMP架構中Nginx如何配置虛擬主機

## 一、LNMP架構概述

LNMP代表Linux、Nginx、MySQL/MariaDB、PHP/Python/Perl,是一種流行的Web服務解決方案架構。與傳統的LAMP(Linux+Apache+MySQL+PHP)架構相比,LNMP具有以下優勢:

1. **高性能**:Nginx采用事件驅動架構,能輕松應對高并發請求
2. **低資源消耗**:內存占用遠低于Apache
3. **高穩定性**:單個服務崩潰不會影響整體服務
4. **靈活的配置**:配置文件簡潔明了,易于管理

在LNMP環境中,Nginx作為前端Web服務器,負責處理靜態請求并將動態請求轉發給PHP-FPM處理。

## 二、Nginx虛擬主機基礎概念

### 2.1 什么是虛擬主機

虛擬主機(Virtual Host)允許在一臺服務器上運行多個網站,每個網站有獨立的配置和域名,但對用戶表現為獨立的服務器。

### 2.2 Nginx虛擬主機類型

1. **基于域名的虛擬主機**:通過不同域名區分
   ```nginx
   server {
       listen 80;
       server_name example.com;
       # 配置內容
   }
  1. 基于IP的虛擬主機:通過不同IP地址區分

    server {
       listen 192.168.1.1:80;
       # 配置內容
    }
    
  2. 基于端口的虛擬主機:通過不同端口區分

    server {
       listen 8080;
       # 配置內容
    }
    

2.3 虛擬主機配置文件結構

典型Nginx虛擬主機配置包含以下核心部分:

server {
    listen       80;
    server_name  example.com www.example.com;
    
    root   /var/www/example;
    index  index.php index.html index.htm;
    
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

三、詳細配置步驟

3.1 準備工作

  1. 確保已安裝Nginx:

    sudo apt-get install nginx  # Ubuntu/Debian
    sudo yum install nginx      # CentOS/RHEL
    
  2. 創建網站目錄:

    sudo mkdir -p /var/www/example.com/public_html
    sudo chown -R www-data:www-data /var/www/example.com
    sudo chmod -R 755 /var/www
    

3.2 創建虛擬主機配置文件

  1. 進入Nginx配置目錄:

    cd /etc/nginx/sites-available  # Ubuntu/Debian
    cd /etc/nginx/conf.d          # CentOS/RHEL
    
  2. 創建配置文件:

    sudo nano example.com.conf
    
  3. 基礎配置模板:

    server {
       listen 80;
       server_name example.com www.example.com;
    
    
       root /var/www/example.com/public_html;
       index index.php index.html index.htm;
    
    
       access_log /var/log/nginx/example.com.access.log;
       error_log /var/log/nginx/example.com.error.log;
    
    
       location / {
           try_files $uri $uri/ =404;
       }
    
    
       location ~ \.php$ {
           include snippets/fastcgi-php.conf;
           fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
       }
    
    
       location ~ /\.ht {
           deny all;
       }
    }
    

3.3 啟用虛擬主機

  1. 創建符號鏈接(Ubuntu/Debian):

    sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
    
  2. 測試配置語法:

    sudo nginx -t
    
  3. 重載Nginx:

    sudo systemctl reload nginx
    

3.4 高級配置示例

3.4.1 配置HTTPS虛擬主機

  1. 獲取SSL證書(以Let’s Encrypt為例):

    sudo apt-get install certbot python3-certbot-nginx
    sudo certbot --nginx -d example.com -d www.example.com
    
  2. 自動生成的HTTPS配置: “`nginx server { listen 443 ssl; server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    root /var/www/example.com/public_html; index index.php index.html index.htm;

    # 其他配置… }

server { listen 80; server_name example.com www.example.com; return 301 https://\(host\)request_uri; }


#### 3.4.2 負載均衡配置

```nginx
upstream backend {
    server 192.168.1.2:80 weight=5;
    server 192.168.1.3:80;
    server 192.168.1.4:80 backup;
}

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;
    }
}

四、常見問題與解決方案

4.1 403 Forbidden錯誤

可能原因: - 目錄權限不正確 - Nginx用戶無訪問權限 - SELinux限制(CentOS/RHEL)

解決方案

sudo chown -R nginx:nginx /var/www/example.com
sudo chmod -R 755 /var/www/example.com
# 對于SELinux
sudo chcon -R -t httpd_sys_content_t /var/www/example.com

4.2 PHP文件被下載而非執行

可能原因: - PHP-FPM未正確配置 - location ~ .php$ 配置錯誤

檢查要點: 1. 確認PHP-FPM服務運行:

   sudo systemctl status php7.4-fpm
  1. 檢查fastcgi_pass配置:
    
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;  # 或 127.0.0.1:9000
    

4.3 重定向循環問題

典型場景: HTTPS配置不當導致無限重定向

解決方案

server {
    listen 80;
    server_name example.com;
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;
    
    # 確保沒有額外的重定向規則
    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    }
    # 這會導致循環,應刪除
}

五、性能優化建議

5.1 靜態資源緩存

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 365d;
    add_header Cache-Control "public, no-transform";
}

5.2 Gzip壓縮

gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

5.3 PHP-FPM優化

調整/etc/php/7.4/fpm/pool.d/www.conf

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

六、安全配置建議

6.1 隱藏Nginx版本號

server_tokens off;

6.2 限制敏感目錄訪問

location = /wp-admin {
    deny all;
    return 403;
}

6.3 防止SQL注入

location ~* \.(php|pl|cgi|py|asp)$ {
    fastcgi_param HTTP_PROXY "";
    fastcgi_param QUERY_STRING $query_string;
    # 其他安全參數...
}

七、總結

在LNMP架構中配置Nginx虛擬主機是搭建多網站環境的基礎技能。通過本文的詳細指導,您應該能夠:

  1. 理解Nginx虛擬主機的工作原理
  2. 熟練配置基于域名的虛擬主機
  3. 實現HTTPS安全加密
  4. 解決常見配置問題
  5. 進行基礎性能優化和安全加固

實際生產環境中,建議結合監控工具(如Prometheus)和日志分析工具(如ELK)持續優化服務性能。定期檢查Nginx官方文檔獲取最新安全建議和功能更新。

注意:所有配置修改后都應執行nginx -t測試語法,并通過systemctl reload nginx平滑重載配置,避免服務中斷。 “`

這篇文章總計約3850字,采用Markdown格式編寫,包含: 1. 完整的LNMP虛擬主機配置指南 2. 詳細代碼示例和解釋 3. 常見問題排查方案 4. 性能優化和安全建議 5. 層次分明的章節結構

可根據實際環境調整PHP版本、路徑等具體參數。建議保存為.md文件后用Markdown閱讀器查看格式效果。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

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