Java詳解之Nginx 虛擬主機

什麼是虛擬主機

虛擬主機是一種特殊的軟硬件技術,它可以將網絡上的每一臺計算機分成多個虛擬主機,每個虛擬主機可以獨立對外提供 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性能優化、分佈式架構等這些成爲架構師必備的知識體系。還能領取免費的學習資源,目前受益良多!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章