什麼是虛擬主機
虛擬主機是一種特殊的軟硬件技術,它可以將網絡上的每一臺計算機分成多個虛擬主機,每個虛擬主機可以獨立對外提供 www 服務,這樣就可以實現一臺主機對外提供多個 web 服務,每個虛擬主機之間是獨立的,互不影響的。
通過 Nginx 可以實現虛擬主機的配置,Nginx 支持三種類型的虛擬主機配置
基於 IP 的虛擬主機
基於域名的虛擬主機
基於端口的虛擬主機
Nginx 配置文件的結構
# ...
events {
# ...
}
http {
# ...
server{
# ...
}
# ...
server{
# ...
}
}
注:每個 server 就是一個虛擬主機
順便給大家推薦一個Java技術交流羣:473984645裏面會分享一些資深架構師錄製的視頻資料:有Spring,MyBatis,Netty源碼分析,高併發、高性能、分佈式、微服務架構的原理,JVM性能優化、分佈式架構等這些成爲架構師必備的知識體系。還能領取免費的學習資源,目前受益良多!
基於 IP 的虛擬主機配置
Linux 操作系統允許添加 IP 別名,IP 別名就是在一塊物理網卡上綁定多個 lP 地址。這樣就能夠在使用單一網卡的同一個服務器上運行多個基於 IP 的虛擬主機。
需求
一臺 Nginx 服務器綁定兩個 IP:192.168.75.145、192.168.75.245
訪問不同的 IP 請求不同的 HTML 目錄,即:
訪問 http://192.168.75.145 將訪問 html145 目錄下的 html 網頁
訪問 http://192.168.75.245 將訪問 html245 目錄下的 html 網頁
創建目錄及文件
在 /usr/local/docker/nginx/html 目錄下創建 html145 和 html245 兩個目錄,並分辨創建兩個 index.html 文件
綁定多 IP
ifconfig ens33:0 192.168.75.245 broadcast 192.168.75.255 netmask 255.255.255.0
配置虛擬主機
修改 /usr/local/docker/nginx 目錄下的 nginx.conf 配置文件:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 配置虛擬主機 192.168.75.145
server {
# 監聽的ip和端口,配置 192.168.75.145:80
listen 80;
# 虛擬主機名稱這裏配置ip地址
server_name 192.168.75.145;
# 所有的請求都以/開始,所有的請求都可以匹配此 location
location / {
# 使用 root 指令指定虛擬主機目錄即網頁存放目錄
# 比如訪問 http://ip/index.html 將找到 /usr/local/docker/nginx/html/html145/index.html
# 比如訪問 http://ip/item/index.html 將找到 /usr/local/docker/nginx/html/html145/item/index.html
root /usr/share/nginx/html145;
# 指定歡迎頁面,按從左到右順序查找
index index.html index.htm;
}
}
# 配置虛擬主機 192.168.75.245
server {
listen 80;
server_name 192.168.75.245;
location / {
root /usr/share/nginx/html245;
index index.html index.htm;
}
}
}
順便給大家推薦一個Java技術交流羣:473984645裏面會分享一些資深架構師錄製的視頻資料:有Spring,MyBatis,Netty源碼分析,高併發、高性能、分佈式、微服務架構的原理,JVM性能優化、分佈式架構等這些成爲架構師必備的知識體系。還能領取免費的學習資源,目前受益良多!
基於端口的虛擬主機配置
需求
Nginx 對外提供 80 和 8080 兩個端口監聽服務
請求 80 端口則請求 html80 目錄下的 html
請求 8080 端口則請求 html8080 目錄下的 html
創建目錄及文件
在 /usr/local/docker/nginx/html 目錄下創建 html80 和 html8080 兩個目錄,並分辨創建兩個 index.html 文件
配置虛擬主機
修改 /usr/local/docker/nginx 目錄下的 nginx.conf 配置文件:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 配置虛擬主機 192.168.75.145
server {
# 監聽的ip和端口,配置 192.168.75.145:80
listen 80;
# 虛擬主機名稱這裏配置ip地址
server_name 192.168.75.145;
# 所有的請求都以/開始,所有的請求都可以匹配此 location
location / {
# 使用 root 指令指定虛擬主機目錄即網頁存放目錄
# 比如訪問 http://ip/index.html 將找到 /usr/local/docker/nginx/html/html145/index.html
# 比如訪問 http://ip/item/index.html 將找到 /usr/local/docker/nginx/html/html145/item/index.html
root /usr/share/nginx/html80;
# 指定歡迎頁面,按從左到右順序查找
index index.html index.htm;
}
}
# 配置虛擬主機 192.168.75.245
server {
listen 8080;
server_name 192.168.75.245;
location / {
root /usr/share/nginx/html8080;
index index.html index.htm;
}
}
}
注意: 別忘記將容器的 8080 端口映射到宿主機,否則無法訪問 8080 端口
基於域名的虛擬主機配置
需求
兩個域名指向同一臺 Nginx 服務器,用戶訪問不同的域名顯示不同的網頁內容
兩個域名是 admin.ooqiu.com 和 service.ooqiu.com
Nginx 服務器使用虛擬機 192.168.75.145
配置 Windows Hosts 文件
通過 host 文件指定 admin.ooqiu.com 和 service.ooqiu.com 對應 192.168.75.145 虛擬機:
修改 window 的 hosts 文件:(C:\Windows\System32\drivers\etc)
創建目錄及文件
在 /usr/local/docker/nginx/html 目錄下創建 htmladmin 和 htmlservice 兩個目錄,並分辨創建兩個 index.html 文件
配置虛擬主機
user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name admin.ooqiu.com;
location / {
root /usr/share/nginx/htmladmin;
index index.html index.htm;
}
}
server {
listen 80;
server_name service.ooqiu.com;
location / {
root /usr/share/nginx/htmlservice;
index index.html index.htm;
}
}
}
感謝您的閱讀。對文章如有疑問,歡迎提出。望分享的內容對大家有所幫助。蒐集整理了一些Java資料,包括Java進階學習路線以及對應學習資料,還有一些大廠面試題,需要的朋友可以自行領取:Java高級架構學習資料分享+架構師成長之路
順便給大家推薦一個Java技術交流羣:473984645裏面會分享一些資深架構師錄製的視頻資料:有Spring,MyBatis,Netty源碼分析,高併發、高性能、分佈式、微服務架構的原理,JVM性能優化、分佈式架構等這些成爲架構師必備的知識體系。還能領取免費的學習資源,目前受益良多!