高性能 WEB 服務器 Nginx:多虛擬主機實現!

Nginx 配置多虛擬主機實現

多虛擬主機是指在一臺 Nginx 服務器上配置多個網站

在 Nginx 中,多虛擬主機有三種實現方式:

  • 基于IP地址實現多虛擬主機

  • 基于端口號實現多虛擬主機

  • 基于域名實現多虛擬主機

1 基于域名實現多虛擬主機

在 Nginx 中配置多個 server 段,每個 server 中設置一個虛擬主機配置,客戶端訪問服務器時,會根據客戶端請求頭中的 Host 字段值來匹配 server 段中的配置,從而訪問不同的網站???????

[root@ubuntu?~]# cd?/etc/nginx/sites-enabled/
#設置兩個域名配置文件[root@ubuntu?sites-enabled]# cat www.m99-josedu.comserver {? listen?80;? server_name www.m99-josedu.com;? root?/var/www/html/www.m99-josedu.com;}
[root@ubuntu?sites-enabled]# cat www.m99-josedu.netserver {? listen?80;? server_name www.m99-josedu.net;? root?/var/www/html/www.m99-josedu.net;}?
#修改默認頁面,創建網站目錄和首頁[root@ubuntu?~]# mv?/var/www/html/index.nginx-debian.html?/tmp/[root@ubuntu?~]# echo?"welcome to nginx"?>?/var/www/html/index.html[root@ubuntu?~]# mkdir?/var/www/html/www.m99-josedu.{com,net}[root@ubuntu?~]# echo?"this page from com"?>?/var/www/html/www.m99-josedu.com/index.html[root@ubuntu?~]# echo?"this page from net"?>?/var/www/html/www.m99-josedu.net/index.html[root@ubuntu?~]# tree?/var/www/html//var/www/html/├──?index.html├──?www.m99-josedu.com│? ?└──?index.html└──?www.m99-josedu.net? ??└──?index.html2?directories,?3?files
#測試配置文件并重新加載服務[root@ubuntu?~]# nginx?-tnginx: the configuration file?/etc/nginx/nginx.conf syntax?is?oknginx: configuration file?/etc/nginx/nginx.conf test?is?successful[root@ubuntu?~]# systemctl reload nginx.service
#客戶端配置域名解析并測試[root@ubuntu?~]# cat?/etc/hosts10.0.0.206?www.m99-josedu.com www.m99-josedu.net[root@ubuntu?~]# curl www.m99-josedu.comthis page from com[root@ubuntu?~]# curl www.m99-josedu.netthis page from net

1.1 設置虛擬主機的默認主頁???????

#當前沒有設置 index,使用默認index配置[root@ubuntu ~]# cat /etc/nginx/sites-enabled/www.m99-josedu.comserver {? listen?80;? server_name www.m99-josedu.com;? root /var/www/html/www.m99-josedu.com;}
[root@ubuntu ~]# ls -l /var/www/html/www.m99-josedu.com/total?12-rw-r--r--?1?root root?4?Jan?23?17:49?a.txt-rw-r--r--?1?root root?8?Jan?23?17:49?default.htm-rw-r--r--?1?root root?19?Jan?23?09:05?index.html
#測試,默認 index.html 生效[root@ubuntu ~]# curl www.m99-josedu.comthis?page?from?com
#修改配置[root@ubuntu ~]# cat /etc/nginx/sites-enabled/www.m99-josedu.comserver {? listen?80;? index index.html?default.htm a.txt;? server_name www.m99-josedu.com;? root /var/www/html/www.m99-josedu.com;}?
#重載生效[root@ubuntu ~]# systemctl reload nginx.service
#客戶端測試 默認頁面是 index.html[root@ubuntu ~]# curl www.m99-josedu.comthis?page?from?com
#服務器上刪除 index.html[root@ubuntu ~]# rm -f /var/www/html/www.m99-josedu.com/index.html[root@ubuntu ~]# ls /var/www/html/www.m99-josedu.com/a.txt?default.htm
#客戶端測試 默認頁面是 default.htm[root@ubuntu ~]# curl www.m99-josedu.comdefault
#服務器上刪除 default.htm[root@ubuntu ~]# rm -f /var/www/html/www.m99-josedu.com/default.htm[root@ubuntu ~]# ls /var/www/html/www.m99-josedu.com/a.txt
#客戶端測試 默認頁面是 a.txt[root@ubuntu ~]# curl www.m99-josedu.comaaa
#服務器上刪除 a.txt[root@ubuntu ~]# rm -f /var/www/html/www.m99-josedu.com/a.txt[root@ubuntu ~]# ls /var/www/html/www.m99-josedu.com/
#客戶端測試 報錯[root@ubuntu ~]# curl www.m99-josedu.com<html><head><title>403?Forbidden</title></head><body><center><h1>403?Forbidden</h1></center><hr><center>nginx</center></body></html>

1.2 設置服務器的默認虛擬主機

用 http 協議訪問服務器IP或沒有在服務器上配置的域名時,會被默認虛擬主機命中???????

#此時如果客戶端直接訪問服務器IP地址,能訪問到默認頁面[root@ubuntu ~]# curl http://10.0.0.206welcome to nginx
#在主配置文件 /etc/nginx.conf 中,包含了虛擬主機配置文件[root@ubuntu ~]# cat /etc/nginx/nginx.confinclude /etc/nginx/sites-enabled/*;
#查看當前的虛擬主機配置[root@ubuntu ~]# ls -lh /etc/nginx/sites-enabled/total?8.0Klrwxrwxrwx?1?root root?34?Jan?21?00:36?default ->?/etc/nginx/sitesavailable/default-rw-r--r--?1?root root?100?Jan?23?09:04?www.m99-josedu.com-rw-r--r--?1?root root?100?Jan?23?09:06?www.m99-josedu.net
#查看默認配置[root@ubuntu ~]# cat /etc/nginx/sites-enabled/default | grep -Ev "#|^$"server {??listen?80?default_server;?#default_server 表示默認虛擬主機配置??listen?[::]:80?default_server;?#default_server 表示默認虛擬主機配置? root /var/www/html;??index?index.html index.htm index.nginx-debian.html;? server_name?_;? location / {? ? try_files $uri $uri/ =404;? }}?
#客戶端增加 abc.m99-josedu.org def.m99-josedu.org 的解析#但服務端沒有該域名的配置[root@ubuntu ~]# cat /etc/hosts10.0.0.206?www.m99-josedu.com www.m99-josedu.net abc.m99-josedu.org def.m99-josedu.org
#測試,被服務端兜底的配置命中[root@ubuntu ~]# curl abc.m99-josedu.orgwelcome to nginx[root@ubuntu ~]# curl def.m99-josedu.orgwelcome to nginx???????
#修改服務端配置,新增域名解析[root@ubuntu ~]# cat /etc/nginx/sites-enabled/abc.m99-josedu.orgserver {? listen?80;? server_name abc.m99-josedu.org;? root /var/www/html/abc.m99-josedu.org;}
[root@ubuntu ~]# mkdir /var/www/html/abc.m99-josedu.org[root@ubuntu ~]# echo "this page from abc.m99-josedu.org" > /var/www/html/abc.m99-josedu.org/index.html[root@ubuntu ~]# systemctl reload nginx.service
#客戶端測試-命中域名配置[root@ubuntu ~]# curl abc.m99-josedu.orgthis?page?from?abc.m99-josedu.org
#客戶端測試-命中默認配置[root@ubuntu ~]# curl def.m99-josedu.orgwelcome to nginx??????
#去掉默認配置中的 default_server[root@ubuntu ~]# cat /etc/nginx/sites-enabled/defaultserver {??#listen 80 default_server;??#listen [::]:80 default_server;? listen?80;? ......
#重載服務并測試[root@ubuntu ~]# systemctl reload nginx.service[root@ubuntu ~]# curl abc.m99-josedu.orgthis?page?from?abc.m99-josedu.org
#此處被 abc 的配置命中[root@ubuntu ~]# curl def.m99-josedu.orgthis?page?from?abc.m99-josedu.org
#IP也被 abc 配置命中[root@ubuntu ~]# curl http://10.0.0.206this?page?from?abc.m99-josedu.org
#在沒有定義 default_server 的情況下,默認會被第一個配置文件命中#主配置文件中會按此順序引用文件[root@ubuntu ~]# ls /etc/nginx/sites-enabled/abc.m99-josedu.org?default?www.m99-josedu.com www.m99-josedu.net[root@ubuntu ~]# ls -l /etc/nginx/sites-enabled/total?12-rw-r--r--?1?root root?100?Jan?23?10:03?abc.m99-josedu.orglrwxrwxrwx?1?root root?34?Jan?21?00:36?default?-> /etc/nginx/sitesavailable/default-rw-r--r--?1?root root?100?Jan?23?09:50?www.m99-josedu.com-rw-r--r--?1?root root?100?Jan?23?09:06?www.m99-josedu.net
#修改文件名[root@ubuntu ~]# mv /etc/nginx/sites-enabled/{www.m99-josedu.com,aaa.m99-josedu.com}
#重載服務[root@ubuntu ~]# systemctl reload nginx.service[root@ubuntu ~]# ls /etc/nginx/sites-enabled/aaa.m99-josedu.com abc.m99-josedu.org?default?www.m99-josedu.net
#再次測試,默認被最先引用的配置文件命中[root@ubuntu ~]# curl def.m99-josedu.orgthis?page?from?com[root@ubuntu ~]# curl http://10.0.0.206this?page?from?com
#改回文件名,并設置 default_server[root@ubuntu ~]# mv /etc/nginx/sites-enabled/{aaa.m99-josedu.com,www.m99-josedu.com}[root@ubuntu ~]# ls /etc/nginx/sites-enabled/abc.m99-josedu.org?default?www.m99-josedu.com www.m99-josedu.net
#www.m99-josedu.net 文件在引用時被放在最后,但設置了 default_server[root@ubuntu ~]# cat /etc/nginx/sites-enabled/www.m99-josedu.netserver {? listen?80?default_server;? server_name www.m99-josedu.net;? root /var/www/html/www.m99-josedu.net;}[root@ubuntu ~]# systemctl reload nginx.service
#客戶端測試[root@ubuntu ~]# curl http://10.0.0.206this?page?from?net[root@ubuntu ~]# curl def.m99-josedu.orgthis?page?from?net

2 基于IP地址實現多虛擬主機???????

#添加IP[root@ubuntu ~]# ip a a 10.0.0.216/24 dev ens33[root@ubuntu ~]# ip a a 10.0.0.226/24 dev ens33[root@ubuntu ~]# ip a a 10.0.0.236/24 dev ens33[root@ubuntu ~]# ip a s ens332: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu?1500?qdisc fq_codel?state?UP group default qlen?1000? ??link/ether?00:0c:29:11:98:d9 brd ff:ff:ff:ff:ff:ff? ? altname enp2s1? ? inet?10.0.0.206/24?metric?100?brd?10.0.0.255?scope global dynamic ens33? ? ? valid_lft?1118sec preferred_lft?1118sec? ? inet?10.0.0.216/24?scope global secondary ens33? ? ? valid_lft forever preferred_lft forever? ? inet?10.0.0.226/24?scope global secondary ens33? ? ? valid_lft forever preferred_lft forever? ? inet?10.0.0.236/24?scope global secondary ens33? ? ? valid_lft forever preferred_lft forever? ? inet6 fe80::20c:29ff:fe11:98d9/64?scope?link? ? ? valid_lft forever preferred_lft forever
#恢復 default_server ,為域名綁定不同的IP[root@ubuntu ~]# cat /etc/nginx/sites-enabled/abc.m99-josedu.orgserver {??listen?10.0.0.206:80;??listen?10.0.0.216:80;? server_name abc.m99-josedu.org;? root /var/www/html/abc.m99-josedu.org;}
[root@ubuntu ~]# cat /etc/nginx/sites-enabled/www.m99-josedu.comserver {??listen?10.0.0.226:80;? server_name www.m99-josedu.com;? root /var/www/html/www.m99-josedu.com;}
[root@ubuntu ~]# ls /etc/nginx/sites-enabled/abc.m99-josedu.org default www.m99-josedu.com www.m99-josedu.net[root@ubuntu ~]# systemctl reload nginx
#客戶端修改hosts 文件并測試[root@ubuntu ~]# cat /etc/hosts10.0.0.206?www.m99-josedu.net10.0.0.216?abc.m99-josedu.org10.0.0.226?www.m99-josedu.com[root@ubuntu ~]# curl www.m99-josedu.comthis page from com[root@ubuntu ~]# curl abc.m99-josedu.orgthis page from abc.m99-josedu.org[root@ubuntu ~]# curl www.m99-josedu.comthis page from com
[root@ubuntu ~]# curl 10.0.0.206this page from abc.m99-josedu.org[root@ubuntu ~]# curl 10.0.0.216this page from abc.m99-josedu.org[root@ubuntu ~]# curl 10.0.0.226this page from com[root@ubuntu ~]# curl 10.0.0.236welcome to nginx

3 基于端口號實現多虛擬主機???????

#服務器上所有IP 的81,82端口都會被此規則匹配[root@ubuntu ~]# cat /etc/nginx/sites-enabled/abc.m99-josedu.orgserver {? listen?81;? listen?82;? server_name abc.m99-josedu.org;? root /var/www/html/abc.m99-josedu.org;}?
#所有88端口的訪問都會被此規則匹配[root@ubuntu ~]# cat /etc/nginx/sites-enabled/www.m99-josedu.comserver {? listen?88;? server_name www.m99-josedu.com;? root /var/www/html/www.m99-josedu.com;}[root@ubuntu ~]# systemctl reload nginx.service
#客戶端測試[root@ubuntu ~]# curl 10.0.0.206welcome to nginx[root@ubuntu ~]# curl 10.0.0.206:81this?page?from?abc.m99-josedu.org[root@ubuntu ~]# curl 10.0.0.206:82this?page?from?abc.m99-josedu.org[root@ubuntu ~]# curl 10.0.0.206:88this?page?from?com
#用默認端口,被默認規則匹配[root@ubuntu ~]# curl abc.m99-josedu.orgwelcome to nginx
#指定域名和端口[root@ubuntu ~]# curl abc.m99-josedu.org:81this?page?from?abc.m99-josedu.org[root@ubuntu ~]# curl abc.m99-josedu.org:82this?page?from?abc.m99-josedu.org
#指定域名和端口,被服務器上默認 88 匹配[root@ubuntu ~]# curl abc.m99-josedu.org:88this?page?from?com

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/79805.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/79805.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/79805.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網星安全AWS攻防方案,重磅發布!

AWS介紹 AWS&#xff08;Amazon Web Services&#xff09; 是 Amazon 提供的云計算平臺&#xff0c;提供了廣泛的云服務&#xff0c;包括計算、存儲、數據庫、網絡、安全、人工智能、大數據處理等功能&#xff0c;幫助企業和開發者構建、部署和管理應用程序。AWS 是全球最大的…

qt的containers里的QToolBox和QTabWidget

Tool Box是一個多層次的折疊面板&#xff0c;通常用于組織多個可展開/折疊的面板組&#xff0c;每個面板有一個標題欄&#xff0c;用戶點擊標題欄可以展開或收起內容區域。比如設置界面中的分類選項&#xff0c;每個分類可以展開查看詳細內容。這樣能節省空間&#xff0c;讓界面…

【神經網絡與深度學習】深度學習中的生成模型簡介

深度學習中的生成模型 openai 的一個古早介紹 引言 深度學習中的生成模型能夠學習數據分布并生成新數據&#xff0c;在人工智能的多個領域中都有重要應用。不同類型的生成模型在原理和結構上各有特點&#xff0c;適用于不同的任務&#xff0c;如圖像生成、文本生成和時間序列…

js獲取明天日期、Vue3大菠蘿 Pinia的使用

直接上代碼 const today new Date(2019, 2, 28) const finalDate new Date(today) finalDate.setDate(today.getDate() 3)console.log(finalDate) // 31 March 2019 安裝 yarn add pinia # or with npm npm install pinia創建第一個store倉庫 1、在src目錄下創建store目錄…

存儲過程補充——定義條件、處理程序及游標使用

文章目錄 1. 定義條件與處理程序1.1 定義條件1.2 處理程序1.3 案例演示 2. 游標2.1 使用游標第一步&#xff0c;聲明游標第二步&#xff0c;打開游標第三步&#xff0c;使用游標&#xff08;從游標中取得數據&#xff09;第四步&#xff0c;關閉游標 2.2 舉例2.3 小結 在 MySQL…

藍橋杯單片機國賽模板——基于柳離風模板

藍橋杯單片機國賽模板——基于柳離風模板 文章目錄 藍橋杯單片機國賽模板——基于柳離風模板一、工程結構二、USER文件夾main.c 三、BSP文件夾1、sys2、display3、key4、timer5、iic6、ds13027、onewire8、uart9、ultrasound 四、源碼五、內存不夠 一、工程結構 與省賽模板相比…

C與指針——常見庫函數

字符串 #include<stdlibs.h> int abs(int); long labs(long); int rand(void);//0-RAND_MAX //字符串轉值 int atoi(const char*); long atol(const char*); float atof(const char*);數學\排序 #include<math.h> \\常見三角&#xff0c;sqrt(); exp(); double p…

數學復習筆記 2

前言 朋友和我討論了一個二重積分題&#xff0c;非常有意思。內容非常細致。整理如下&#xff1a; 二重積分 題目來源是 1000 上面的 16 題&#xff0c;積分區域是一個偏心圓&#xff0c;偏心圓的圓心在 y 軸上面&#xff0c;偏心圓是關于 y 軸對稱的&#xff0c;可以看關于…

Javaweb項目--Mybatis,導入com.mysql.cj.jdbc.Driver時報錯,Cannot resolve class ‘Driver‘

目錄 問題解決方法結果 問題 在項目java文件下&#xff0c;包文件下的application.properties文件中&#xff0c;項目目錄如下&#xff1a; 報錯信息如下&#xff1a; 解決方法 在pom.xml文件中增加此依賴 結果 報錯信息消失

分布式-redisson

分布式鎖redisson 加鎖流程緩存相關問題 加鎖流程 redisson底層通過lua腳本實現加鎖的原子性lock動作包含&#xff1a;加鎖、設置超時時間、鎖續命未獲取到鎖的線程通過獲取信號量許可等待&#xff0c;所釋放后釋放信號量通知等待線程 緩存相關問題 緩存失效&#xff08;擊穿…

Java基礎學完,繼續深耕(0505)Linux 常用命令

昨天休息了一天&#xff0c;沒有寫csdn 昨天和今天把Linux大概學了一下。總結一下常用命令&#xff0c;總結的不全。 Linux目錄結構 / 是所有目錄的頂點 目錄結構像一顆倒掛的樹 注意&#xff1a;/itheima 是絕對路徑&#xff0c;是指根目錄 / 下的itheima目錄 itheima…

【AI論文】Sadeed:通過小型語言模型推進阿拉伯語變音

摘要&#xff1a;由于語言的形態豐富&#xff0c;阿拉伯語文本的變音符號仍然是自然語言處理中一個持續的挑戰。 在本文中&#xff0c;我們介紹了一種基于微調解碼器語言模型的新方法Sadeed&#xff0c;該方法改編自Kuwain 1.5B Hennara等人[2025]的模型&#xff0c;該模型最初…

學習海康VisionMaster之亮度測量

一&#xff1a;進一步學習了 今天學習下VisionMaster中的亮度測量&#xff1a;這個和前面學習的都不一樣了&#xff0c;這個是測量ROI區域內的平均亮度等 1&#xff1a;什么是亮度測量&#xff1f; 我們工業上用的相機里面有一個感光芯片&#xff08;CCD/CMOS&#xff09;&…

學習路線(python)

Python從初級到專家的學習路線# 初級階段 (1-3個月)基礎語法數據結構文件操作推薦資源 中級階段 (3-6個月)面向對象編程常用模塊錯誤處理進階特性推薦資源 高級階段 (6-12個月)并發編程性能優化元編程設計模式推薦資源 專業方向 (選擇1-2個方向深入)Web開發數據分析/科學計算機…

svn文件提交失敗

這里寫自定義目錄標題 1報錯項目2.解決辦法1.安裝sqlite3.exe 數據庫2.sqlite3.exe放到svn 項目的主目錄下&#xff0c;和.svn目錄同級下, 可以直接在數據庫目錄下執行cmd命令。3.在當前目錄下 cmd 運行命令 4.最后再項目的文件夾下&#xff0c;看是否可以 clean up了。--成功&…

調試——GDB、日志

調試——GDB、日志 1. gdb常用指令2. 如何生成core文件并調試&#xff1f;3. 如何調試正在運行的程序4. 調試多進程程序5. 調試多線程程序6. log日志 gcc編譯器可以幫我們發現語法錯誤&#xff0c;但是對業務邏輯錯誤卻無能為力。當我們想找出邏輯錯誤時&#xff0c;就需要調試…

redis----通用命令

文章目錄 前言一、運行redis二、help [command]三、通用命令 前言 提示&#xff1a;這里可以添加本文要記錄的大概內容&#xff1a; 學習一些通用命令 以下操作在windows中演示 提示&#xff1a;以下是本篇文章正文內容&#xff0c;下面案例可供參考 一、運行redis 我們先c…

CatBoost算法原理及Python實現

一、概述 CatBoost 是在傳統GBDT基礎上改進和優化的一種算法&#xff0c;由俄羅斯 Yandex 公司開發&#xff0c;于2017 年開源&#xff0c;在處理類別型特征和防止過擬合方面有獨特優勢。 在實際數據中&#xff0c;存在大量的類別型特征&#xff0c;如性別、顏色、類別等&#…

五一假期作業

sub_process.c #include <stdio.h> // 標準輸入輸出庫 #include <pthread.h> // POSIX線程庫 #include <sys/ipc.h> // IPC基礎定義&#xff08;如消息隊列/共享內存&#xff09; #include <sys/msg.h> // 消息隊列操作相關…

Liunx安裝Apache Tomcat

目錄 一、了解tomcat 二、下載 三、啟動tomcat 四、網頁訪問tomcat 五、Tomcat修改默認8080端口 六、Tomcat創建項目步驟-實現項目對外訪問 一、了解tomcat Apache Tomcat 是一個開源的 Java Servlet 容器 和 Web 服務器&#xff0c;主要用于運行基于 Java 的 Web 應用…