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

利用Nginx實(shí)現(xiàn)一個IP部署多個網(wǎng)站

 更新時間:2026年05月19日 09:21:37   作者:江上清風(fēng)山間明月  
文章主要介紹了如何在一個服務(wù)器/一個IP地址上部署多個網(wǎng)站虛擬主機(jī)的方法,主要包括基于域名、端口和IP地址的區(qū)分方式,并詳細(xì)描述了Nginx的虛擬主機(jī)配置結(jié)構(gòu)和匹配優(yōu)先,此外,文章還提供了完整的多站點(diǎn)部署示例、限制方案以及管理命令速查,需要的朋友可以參考下

一個服務(wù)器/一個 IP 地址完全可以部署多個網(wǎng)站虛擬主機(jī)

一、一個 IP 部署多個網(wǎng)站的原理

1. 基于域名區(qū)分(最常見)

多個網(wǎng)站共享同一個 IP 和端口(80/443),Nginx 根據(jù)請求頭中的 Host 字段區(qū)分:

用戶訪問 http://a.com   → Nginx 匹配 server_name a.com → 返回網(wǎng)站 A
用戶訪問 http://b.com   → Nginx 匹配 server_name b.com → 返回網(wǎng)站 B
用戶訪問 http://c.com   → Nginx 匹配 server_name c.com → 返回網(wǎng)站 C

2. 基于端口區(qū)分

不同網(wǎng)站用不同端口:

http://服務(wù)器IP:80    → 網(wǎng)站 A
http://服務(wù)器IP:8080  → 網(wǎng)站 B
http://服務(wù)器IP:3000  → 網(wǎng)站 C

3. 基于 IP 區(qū)分(需要多網(wǎng)卡)

http://192.168.1.10  → 網(wǎng)站 A
http://192.168.1.11  → 網(wǎng)站 B

二、Nginx 的虛擬主機(jī)配置結(jié)構(gòu)

配置文件層次

/etc/nginx/
├── nginx.conf                    # 主配置文件
├── sites-available/              # 所有站點(diǎn)配置(倉庫)
│   ├── site1.com
│   ├── site2.com
│   └── rentalhousing
└── sites-enabled/                # 啟用的站點(diǎn)(開關(guān))
    ├── site1.com -> ../sites-available/site1.com
    ├── site2.com -> ../sites-available/site2.com
    └── rentalhousing -> ../sites-available/rentalhousing

單個站點(diǎn)配置文件示例

/etc/nginx/sites-available/rentalhousing

server {
    listen 80;
    server_name rental.yourdomain.com;   # 域名1
    
    root /opt/rentalhousing/apps/web/dist;
    index index.html;
    
    location /api/ {
        proxy_pass http://127.0.0.1:3000;
    }
}

/etc/nginx/sites-available/another-site

server {
    listen 80;
    server_name another.com www.another.com;   # 域名2
    
    root /var/www/another-site;
    index index.html;
}

三、完整的多站點(diǎn)部署示例

場景:你的服務(wù)器上部署三個網(wǎng)站

網(wǎng)站域名用途
租房系統(tǒng)rent.yourdomain.com你的主項(xiàng)目
博客blog.yourdomain.com技術(shù)博客
個人主頁yourdomain.com個人介紹

步驟

1. 創(chuàng)建三個配置文件

# 租房系統(tǒng)
sudo nano /etc/nginx/sites-available/rentalhousing
server {
    listen 80;
    server_name rent.yourdomain.com;
    
    root /opt/rentalhousing/apps/web/dist;
    
    location /api/ {
        proxy_pass http://127.0.0.1:3000;
    }
}
# 博客
sudo nano /etc/nginx/sites-available/blog
server {
    listen 80;
    server_name blog.yourdomain.com;
    
    root /var/www/blog;
    index index.html;
}
# 個人主頁
sudo nano /etc/nginx/sites-available/homepage
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    
    root /var/www/homepage;
    index index.html;
}

2. 啟用所有站點(diǎn)

# 創(chuàng)建符號鏈接
sudo ln -s /etc/nginx/sites-available/rentalhousing /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/homepage /etc/nginx/sites-enabled/
# 測試配置
sudo nginx -t
# 重載 Nginx
sudo systemctl reload nginx

3. DNS 解析配置

在域名服務(wù)商處添加 A 記錄:

rent.yourdomain.com   A   →  你的服務(wù)器 IP
blog.yourdomain.com   A   →  你的服務(wù)器 IP
yourdomain.com        A   →  你的服務(wù)器 IP

四、匹配優(yōu)先級規(guī)則

當(dāng)一個請求到達(dá)時,Nginx 按以下順序匹配:

# 1. 精確域名匹配
server_name rent.yourdomain.com;     # 最高優(yōu)先級

# 2. 通配符開頭
server_name *.yourdomain.com;        # 匹配 sub.yourdomain.com

# 3. 通配符結(jié)尾
server_name rent.*;                  # 匹配 rent.anything

# 4. 正則表達(dá)式
server_name ~^(www\.)?(.+)$;         # 最低優(yōu)先級

默認(rèn)站點(diǎn)(兜底配置)

server {
    listen 80 default_server;        # 默認(rèn)站點(diǎn)
    server_name _;                   # 匹配所有未匹配的域名
    
    return 404;                      # 或返回其他頁面
}

五、使用端口區(qū)分的示例

# 端口 80 → 網(wǎng)站 A
server {
    listen 80;
    server_name _;
    root /var/www/site-a;
}

# 端口 8080 → 網(wǎng)站 B
server {
    listen 8080;
    server_name _;
    root /var/www/site-b;
}

# 端口 3000 → 網(wǎng)站 C(直接代理到 Node.js)
server {
    listen 3000;
    server_name _;
    
    location / {
        proxy_pass http://127.0.0.1:3001;
    }
}

六、實(shí)際驗(yàn)證

查看 Nginx 加載了哪些配置

# 查看所有啟用的配置
sudo nginx -T | grep "server_name"
# 測試某個域名是否匹配
curl -H "Host: rent.yourdomain.com" http://你的服務(wù)器IP
curl -H "Host: blog.yourdomain.com" http://你的服務(wù)器IP

查看訪問日志區(qū)分

# 為不同站點(diǎn)配置不同日志文件
server {
    server_name rent.yourdomain.com;
    access_log /var/log/nginx/rentalhousing-access.log;
    error_log /var/log/nginx/rentalhousing-error.log;
}

server {
    server_name blog.yourdomain.com;
    access_log /var/log/nginx/blog-access.log;
    error_log /var/log/nginx/blog-error.log;
}

七、實(shí)際限制

方案優(yōu)點(diǎn)缺點(diǎn)適用場景
域名區(qū)分用戶體驗(yàn)好、可無限擴(kuò)展需要域名生產(chǎn)環(huán)境
端口區(qū)分無需域名、配置簡單不友好、需要記住端口測試、內(nèi)部系統(tǒng)
路徑區(qū)分單一域名容易沖突、URL 不美觀臨時方案

路徑區(qū)分示例(單一域名下)

server {
    server_name yourdomain.com;
    
    location /rental/ {
        alias /opt/rentalhousing/apps/web/dist/;
    }
    
    location /blog/ {
        alias /var/www/blog/;
    }
}

八、管理命令速查

# 列出所有可用配置
ls /etc/nginx/sites-available/
# 列出已啟用的配置
ls -la /etc/nginx/sites-enabled/
# 啟用站點(diǎn)
sudo ln -s /etc/nginx/sites-available/站點(diǎn)名 /etc/nginx/sites-enabled/
# 禁用站點(diǎn)(保留配置)
sudo rm /etc/nginx/sites-enabled/站點(diǎn)名
# 重新加載配置
sudo systemctl reload nginx
# 查看錯誤日志
sudo tail -f /var/log/nginx/error.log

總結(jié)

一個服務(wù)器/一個 IP 可以部署無限多個網(wǎng)站,限制只是:

  • 服務(wù)器資源(CPU、內(nèi)存、帶寬)
  • 文件描述符限制(Linux 系統(tǒng)配置)

Nginx 通過 server_namelisten 的組合,結(jié)合 sites-available/sites-enabled 目錄結(jié)構(gòu),實(shí)現(xiàn)了清晰、靈活的站點(diǎn)管理。

以上就是利用Nginx實(shí)現(xiàn)一個IP部署多個網(wǎng)站的詳細(xì)內(nèi)容,更多關(guān)于Nginx一個IP部署多個網(wǎng)站的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Nginx定義域名訪問方式

    Nginx定義域名訪問方式

    這篇文章主要介紹了Nginx定義域名訪問方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 如何修改Nginx版本名稱偽裝任意web server

    如何修改Nginx版本名稱偽裝任意web server

    這篇文章主要介紹了修改Nginx版本名稱偽裝任意web server的方法,非常不錯,具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08
  • Nginx新增http_ssl_module模塊的解決方案

    Nginx新增http_ssl_module模塊的解決方案

    這篇文章主要介紹了Nginx新增http_ssl_module模塊的解決方案,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • Nginx根據(jù)不同瀏覽器語言配置頁面跳轉(zhuǎn)的方法

    Nginx根據(jù)不同瀏覽器語言配置頁面跳轉(zhuǎn)的方法

    這篇文章主要介紹了Nginx根據(jù)不同瀏覽器語言配置頁面跳轉(zhuǎn)的方法,包括一個簡體繁體的基本判斷方法及實(shí)際根據(jù)中英文跳轉(zhuǎn)的例子,需要的朋友可以參考下
    2016-04-04
  • LNMP 解決Access Denied錯誤詳細(xì)介紹

    LNMP 解決Access Denied錯誤詳細(xì)介紹

    這篇文章主要介紹了LNMP 解決Access Denied錯誤詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 解決nginx+lua搭建文件上傳下載服務(wù)問題

    解決nginx+lua搭建文件上傳下載服務(wù)問題

    這篇文章主要介紹了nginx+lua搭建文件上傳下載服務(wù),涉及到nginx安裝配置方法,本文通過代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2017-12-12
  • nginx中path模式配置示例

    nginx中path模式配置示例

    這篇文章主要介紹了nginx中path模式配置示例,nginx服務(wù)器默認(rèn)是不支持pathinfo模式的,需要修改配置才可以實(shí)現(xiàn),本文即給出了配置示例,需要的朋友可以參考下
    2014-12-12
  • nginx反向代理java項(xiàng)目方式

    nginx反向代理java項(xiàng)目方式

    文章簡要介紹了如何使用Nginx作為反向代理來部署Java項(xiàng)目,核心在于配置proxy_pass指令
    2024-12-12
  • Nginx1.21.6生產(chǎn)環(huán)境升級步驟

    Nginx1.21.6生產(chǎn)環(huán)境升級步驟

    這篇文章主要介紹了Nginx1.21.6生產(chǎn)環(huán)境升級步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • Nginx代理Vue項(xiàng)目出現(xiàn)Invalid Host header問題及解決

    Nginx代理Vue項(xiàng)目出現(xiàn)Invalid Host header問題及解決

    在使用Nginx的upstream對Vue項(xiàng)目進(jìn)行負(fù)載均衡時,如果代理地址無法訪問目標(biāo)地址且頁面報錯InvalidHostheader(無效主機(jī)頭),可能是由于Vue項(xiàng)目的主機(jī)檢查配置導(dǎo)致的,解決方法是在Vue項(xiàng)目的webpack.dev.js文件中的devServer下添加disableHostCheck:true,跳過主機(jī)檢查
    2024-12-12

最新評論

广南县| 桐梓县| 平乐县| 碌曲县| 东乡县| 镇安县| 甘泉县| 周至县| 大连市| 敦化市| 上饶市| 丽江市| 岳阳县| 寿阳县| 仲巴县| 夏河县| 建湖县| 西畴县| 金乡县| 航空| 廉江市| 边坝县| 公主岭市| 科技| 宜春市| 吴忠市| 台北市| 榆中县| 海宁市| 三江| 乡城县| 嘉义县| 息烽县| 胶州市| 句容市| 隆林| 平凉市| 依兰县| 梁山县| 南昌市| 玉龙|