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

Nginx中server_name的超詳細使用指南

 更新時間:2025年03月03日 10:53:15   作者:The_SkyUzi  
這篇文章主要介紹了Nginx的server_name指令及其在DNS解析和多域名配置中的應用,包括如何使用通配符和正則表達式進行匹配,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

簡介

server_name 是 Nginx 配置文件中的一個重要指令,用于指定 Nginx 服務器塊(或虛擬主機)應該響應哪些域名的請求。通過正確配置 server_name,你可以在同一臺服務器上托管多個不同的網(wǎng)站,并確保每個域名的請求都能被正確處理。

DNS 解析的過程

  • 客戶端發(fā)起請求:當用戶在瀏覽器中輸入一個域名(如 example.com)時,瀏覽器會向本地 DNS 服務器發(fā)送查詢請求。

  • 遞歸查詢:本地 DNS 服務器會檢查其緩存,如果找到了該域名對應的 IP 地址,則直接返回給客戶端;如果沒有找到,則繼續(xù)向其他 DNS 服務器(如根 DNS 服務器、頂級域 DNS 服務器等)進行遞歸查詢,直到找到目標 IP 地址。

  • 返回結果:一旦找到目標 IP 地址,DNS 服務器會將結果返回給客戶端,瀏覽器就可以使用該 IP 地址與目標服務器建立連接。

  • 緩存結果:為了提高效率,DNS 服務器通常會緩存查詢結果一段時間(稱為 TTL,Time To Live),以便后續(xù)相同的查詢可以直接從緩存中獲取結果,而無需再次進行完整的解析過程。

主機文件的作用

在開發(fā)環(huán)境中,我們通常使用 主機文件/etc/hosts 或 C:\Windows\System32\drivers\etc\hosts)來模擬 DNS 解析。主機文件允許我們在本地將特定的域名映射到指定的 IP 地址,而無需依賴外部 DNS 服務器。這對于測試和開發(fā)非常有用,因為它可以快速配置自定義域名,并且不會影響其他用戶的網(wǎng)絡環(huán)境。

例如,在主機文件中添加以下行:

192.168.154.101 admin.dhl101

這行配置表示,當瀏覽器嘗試訪問 admin.dhl101 時,它會直接解析為 IP 地址 192.168.154.101,而不會去查詢外部 DNS 服務器。

DNS 與 Nginx 的關系

Nginx 使用 server_name 指令來匹配 HTTP 請求中的 Host 頭字段,以確定哪個 server 塊應該處理該請求。因此,DNS 解析的結果(即域名對應的 IP 地址)決定了請求會被發(fā)送到哪臺服務器,而 Nginx 則根據(jù) server_name 指令進一步確定具體的處理邏輯。

例如,假設你有兩臺服務器,分別托管 example.com 和 admin.example.com。用戶在瀏覽器中輸入 admin.example.com,DNS 會將其解析為某臺服務器的 IP 地址,然后 Nginx 會根據(jù) server_name 指令判斷是否應該由該服務器處理該請求。

server_name 的作用

server_name 指令告訴 Nginx,在接收到 HTTP 請求時,如果請求頭中的 Host 字段匹配指定的域名,則該請求應由這個特定的 server 塊來處理。這使得在同一臺服務器上托管多個不同域名的網(wǎng)站成為可能。

基本用法

最簡單的 server_name 配置是為一個具體的域名指定一個 server 塊。例如:

server {
    listen 80;
    server_name example.com;

    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

在這個例子中,Nginx 將會檢查所有進來的 HTTP 請求,并查看請求頭中的 Host 字段。如果 Host 字段的值是 example.com,那么 Nginx 就會使用這個 server 塊中的配置來處理該請求。

通配符和正則表達式

server_name 支持通配符和正則表達式,以便更靈活地匹配域名。

通配符

  • 前綴通配符*.example.com 可以匹配任何以 .example.com 結尾的子域名,如 sub1.example.com、sub2.example.com 等。

    server {
        listen 80;
        server_name *.example.com;
    
        root /var/www/example.com;
        index index.html;
    
        location / {
            try_files $uri $uri/ =404;
        }
    }
    
  • 后綴通配符:Nginx 不直接支持后綴通配符,但可以通過正則表達式實現(xiàn)類似功能。

正則表達式

使用 ~ 開頭的 server_name 可以包含正則表達式。例如:

server {
    listen 80;
    server_name ~^(?<sub>.+)\.example\.com$;

    root /var/www/$sub.example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

在這個例子中,(?<sub>.+) 是一個捕獲組,它允許你在后續(xù)配置中引用匹配到的子域名部分。

默認服務器

如果你希望某個 server 塊作為默認服務器(即在沒有其他服務器塊匹配時處理請求),可以使用以下方式:

  • 空字符串server_name ""; 表示這個 server 塊是默認服務器。
  • 下劃線server_name _; 也可以表示默認服務器。

例如:

server {
    listen 80 default_server;
    server_name _;

    root /var/www/default;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

多域名配置

你可以為同一個 server 塊指定多個域名,用空格分隔。例如:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

這樣,Nginx 會將對 example.com 和 www.example.com 的請求都路由到這個 server 塊。

子域名配置

如果你想為 example.com 的子域名(如 api.example.com 和 admin.example.com)創(chuàng)建獨立的 server 塊,可以按照以下步驟進行配置。

修改主機文件

首先,你需要在主機文件中為新的子域名添加條目。假設你已經(jīng)在主機文件中設置了 192.168.154.101 example.com,現(xiàn)在需要添加 api.example.com 和 admin.example.com

Windows

  • 打開記事本(以管理員身份運行),然后打開 C:\Windows\System32\drivers\etc\hosts 文件。
  • 在文件末尾添加以下行:
    192.168.154.101 api.example.com
    192.168.154.101 admin.example.com
    

macOS 和 Linux

  • 打開終端,并使用文本編輯器(如 nano, vim, emacs 等)編輯 /etc/hosts 文件。例如,使用 nano 編輯器,你可以運行:

    sudo nano /etc/hosts
    
  • 在文件末尾添加以下行:

    192.168.154.101 api.example.com
    192.168.154.101 admin.example.com
    
  • 保存并退出編輯器(對于 nano,按 Ctrl + X,然后按 Y 確認保存更改,最后按 Enter 退出)。

配置 Nginx

接下來,我們需要在 Nginx 中為 api.example.com 和 admin.example.com 分別創(chuàng)建 server 塊。

# 主站配置
server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

# API 子域名配置
server {
    listen 80;
    server_name api.example.com;

    root /var/www/api.example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    # 如果你有 API 服務,可以添加以下配置
    location /api {
        proxy_pass http://localhost:3000;  # 假設 API 服務運行在本地端口 3000
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

# Admin 子域名配置
server {
    listen 80;
    server_name admin.example.com;

    root /var/www/admin.example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

端口監(jiān)聽與 server_name 結合

如果你希望 Nginx 在非標準端口(如 8082)上監(jiān)聽請求,并且只處理特定域名的請求,可以在 listen 指令中明確指定 IP 地址和端口組合。

例如,假設你希望 Nginx 在 192.168.154.101 上監(jiān)聽端口 8082,并且只處理 admin.dhl101 的請求:

server {
    listen 192.168.154.101:8082;
    server_name admin.dhl101;

    root /var/www/login;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

主機文件配置

確保你的主機文件中有以下條目,以便瀏覽器能夠正確解析 admin.dhl101

192.168.154.101 admin.dhl101

測試和驗證

  • 測試配置文件

    • 在修改完 Nginx 配置文件后,先測試配置文件是否有語法錯誤:
      sudo nginx -t
      
  • 重載 Nginx

    • 如果沒有問題,重新加載 Nginx 使配置生效:
      sudo systemctl reload nginx
      
      或者,如果你的系統(tǒng)使用的是不同的初始化系統(tǒng),可能需要使用 sudo service nginx reload。
  • 訪問 URL

    • 打開瀏覽器,訪問 http://admin.dhl101:8082/,確認是否能夠正常加載 /var/www/login 目錄下的內容。

其他注意事項

  • 防火墻設置:確保你的防火墻允許通過端口 8082 的流量。你可以使用以下命令檢查和配置防火墻規(guī)則:

    sudo ufw allow 8082/tcp  # 對于 UFW
    sudo firewall-cmd --add-port=8082/tcp --permanent  # 對于 firewalld
    sudo firewall-cmd --reload
    
  • SELinux 設置(適用于 CentOS/RHEL):如果你的系統(tǒng)啟用了 SELinux,確保 Nginx 有權限監(jiān)聽非標準端口。你可以使用以下命令:

    sudo semanage port -a -t http_port_t -p tcp 8082
    
  • HTTPS 配置:如果你希望為 admin.dhl101 配置 HTTPS,可以使用 mkcert 工具生成自簽名證書。以下是 HTTPS 配置的示例:

    server {
        listen 192.168.154.101:8082 ssl;
        server_name admin.dhl101;
    
        ssl_certificate /path/to/admin.dhl101.pem;
        ssl_certificate_key /path/to/admin.dhl101-key.pem;
    
        root /var/www/login;
        index index.html;
    
        location / {
            try_files $uri $uri/ =404;
        }
    }
    

總結

通過正確配置 server_name,你可以在同一臺服務器上托管多個不同的網(wǎng)站,并確保每個域名的請求都能被正確處理。server_name 支持多種匹配方式,包括具體域名、通配符和正則表達式,可以根據(jù)實際需求靈活使用。此外,結合端口監(jiān)聽和主機文件配置,你可以輕松實現(xiàn)復雜的域名和端口映射,滿足各種開發(fā)和生產(chǎn)環(huán)境的需求。

如果你有更多問題或需要進一步的幫助,請隨時查閱 Nginx 官方文檔或尋求社區(qū)支持。

參考資料

希望這篇筆記能幫助你更好地理解和使用 Nginx 中的 server_name 指令。

到此這篇關于Nginx中server_name的文章就介紹到這了,更多相關Nginx中server_name使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 前端加載訪問速度優(yōu)化詳細指南(Nginx)

    前端加載訪問速度優(yōu)化詳細指南(Nginx)

    在前端開發(fā)中,優(yōu)化頁面加載速度成為了開發(fā)者的一項重要任務,下面這篇文章主要給大家介紹了關于前端加載訪問速度優(yōu)化(Nginx)的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • 詳細nginx多域名配置的方法

    詳細nginx多域名配置的方法

    Nginx綁定多個域名,可通過把多個域名規(guī)則寫一個配置文件里實現(xiàn),也可通過分別建立多個域名配置文件實現(xiàn),為了管理方便,建議每個域名建一個文件,有些同類域名則可寫在一個總的配置文件里。下面這篇文章就來詳細看看nginx多域名配置的方法,有需要的朋友們可以參考。
    2016-12-12
  • 制作能在nginx和IIS中使用的ssl證書

    制作能在nginx和IIS中使用的ssl證書

    現(xiàn)在的后端開發(fā),動不動就是需要https,或者說是需要ssl證書,既然沒有正版的證書,那么我們只能自己制作ssl的證書了。 證書的制作采用的是openssl工具,如果沒有,可以自行安裝下,因為筆者是在linux(ubuntu)下制作,所以一般是使用包管理工具(apt)安裝好了的
    2021-06-06
  • nginx 自定義 404、50x 錯誤頁面的實現(xiàn)

    nginx 自定義 404、50x 錯誤頁面的實現(xiàn)

    本文主要介紹了nginx 自定義 404、50x 錯誤頁面的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-12-12
  • Nginx proxy_set_header配置方式

    Nginx proxy_set_header配置方式

    這篇文章主要介紹了Nginx proxy_set_header配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Nginx反向代理多域名的HTTP和HTTPS服務的實現(xiàn)

    Nginx反向代理多域名的HTTP和HTTPS服務的實現(xiàn)

    這篇文章主要介紹了Nginx反向代理多域名的HTTP和HTTPS服務的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Linux下Tomcat+Nginx服務器環(huán)境安裝配置的簡明教程

    Linux下Tomcat+Nginx服務器環(huán)境安裝配置的簡明教程

    以Nginx作為反向代理再用Tomcat驅動Java Web程序是當今很流行的一種方案,那么這里我們就著眼于最基本的生產(chǎn)環(huán)境搭建,一起來看一下Linux下Tomcat+Nginx服務器環(huán)境安裝配置的簡明教程
    2016-05-05
  • 在Nginx中配置SSL的詳細指南

    在Nginx中配置SSL的詳細指南

    在當今的網(wǎng)絡環(huán)境中,數(shù)據(jù)安全至關重要,SSL和 TLS為數(shù)據(jù)傳輸提供了加密保護,Nginx 是一款高性能的 Web 服務器,廣泛應用于處理 HTTPS 請求,本文將詳細介紹如何在 Nginx 中配置 SSL,需要的朋友可以參考下
    2025-06-06
  • nginx: [warn]

    nginx: [warn] "log_format" directive used only on "http" lev

    這篇文章主要介紹了nginx: [warn] "log_format" directive used only on "http" level 解決方法,需要的朋友可以參考下
    2014-08-08
  • Nginx支持websocket的配置詳解

    Nginx支持websocket的配置詳解

    本文主要介紹了Nginx支持websocket的配置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03

最新評論

武平县| 阿拉尔市| 旬邑县| 乐陵市| 谢通门县| 商都县| 桦川县| 台州市| 海安县| 汾西县| 珲春市| 九江市| 抚远县| 西平县| 屏南县| 邢台市| 博野县| 金昌市| 云阳县| 泰州市| 静海县| 扎赉特旗| 和平区| 洪江市| 闻喜县| 安宁市| 合肥市| 石阡县| 建湖县| 陆川县| 盐池县| 南安市| 西乡县| 曲沃县| 宁都县| 若尔盖县| 襄城县| 凤翔县| 桦甸市| 双牌县| 安宁市|