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

Nginx中指令server_name的詳細(xì)使用指南

 更新時(shí)間:2025年07月25日 09:25:57   作者:我是姜承錄  
對(duì)于Web開發(fā)者來說,Nginx是一個(gè)強(qiáng)大且靈活的Web服務(wù)器和反向代理服務(wù)器,下面這篇文章主要介紹了Nginx中指令server_name詳細(xì)使用的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

簡(jiǎn)介

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

DNS 解析的過程

  1. 客戶端發(fā)起請(qǐng)求:當(dāng)用戶在瀏覽器中輸入一個(gè)域名(如 example.com)時(shí),瀏覽器會(huì)向本地 DNS 服務(wù)器發(fā)送查詢請(qǐng)求。

  2. 遞歸查詢:本地 DNS 服務(wù)器會(huì)檢查其緩存,如果找到了該域名對(duì)應(yīng)的 IP 地址,則直接返回給客戶端;如果沒有找到,則繼續(xù)向其他 DNS 服務(wù)器(如根 DNS 服務(wù)器、頂級(jí)域 DNS 服務(wù)器等)進(jìn)行遞歸查詢,直到找到目標(biāo) IP 地址。

  3. 返回結(jié)果:一旦找到目標(biāo) IP 地址,DNS 服務(wù)器會(huì)將結(jié)果返回給客戶端,瀏覽器就可以使用該 IP 地址與目標(biāo)服務(wù)器建立連接。

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

主機(jī)文件的作用

在開發(fā)環(huán)境中,我們通常使用 主機(jī)文件/etc/hostsC:\Windows\System32\drivers\etc\hosts)來模擬 DNS 解析。主機(jī)文件允許我們?cè)诒镜貙⑻囟ǖ挠蛎成涞街付ǖ?IP 地址,而無需依賴外部 DNS 服務(wù)器。這對(duì)于測(cè)試和開發(fā)非常有用,因?yàn)樗梢钥焖倥渲米远x域名,并且不會(huì)影響其他用戶的網(wǎng)絡(luò)環(huán)境。

例如,在主機(jī)文件中添加以下行:

192.168.154.101 admin.dhl101

這行配置表示,當(dāng)瀏覽器嘗試訪問 admin.dhl101 時(shí),它會(huì)直接解析為 IP 地址 192.168.154.101,而不會(huì)去查詢外部 DNS 服務(wù)器。

DNS 與 Nginx 的關(guān)系

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

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

server_name的作用

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

基本用法

最簡(jiǎn)單的 server_name 配置是為一個(gè)具體的域名指定一個(gè) server 塊。例如:

server {
    listen 80;
    server_name example.com;

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

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

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

通配符和正則表達(dá)式

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

通配符

  • 前綴通配符*.example.com 可以匹配任何以 .example.com 結(jié)尾的子域名,如 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 不直接支持后綴通配符,但可以通過正則表達(dá)式實(shí)現(xiàn)類似功能。

正則表達(dá)式

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

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

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

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

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

默認(rèn)服務(wù)器

如果你希望某個(gè) server 塊作為默認(rèn)服務(wù)器(即在沒有其他服務(wù)器塊匹配時(shí)處理請(qǐng)求),可以使用以下方式:

  • 空字符串server_name ""; 表示這個(gè) server 塊是默認(rèn)服務(wù)器。
  • 下劃線server_name _; 也可以表示默認(rèn)服務(wù)器。

例如:

server {
    listen 80 default_server;
    server_name _;

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

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

多域名配置

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

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 會(huì)將對(duì) example.comwww.example.com 的請(qǐng)求都路由到這個(gè) server 塊。

子域名配置

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

修改主機(jī)文件

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

Windows

  • 打開記事本(以管理員身份運(yùn)行),然后打開 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 編輯器,你可以運(yùn)行:

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

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

配置 Nginx

接下來,我們需要在 Nginx 中為 api.example.comadmin.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 服務(wù),可以添加以下配置
    location /api {
        proxy_pass http://localhost:3000;  # 假設(shè) API 服務(wù)運(yùn)行在本地端口 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結(jié)合

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

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

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

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

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

主機(jī)文件配置

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

192.168.154.101 admin.dhl101

測(cè)試和驗(yàn)證

  1. 測(cè)試配置文件

    • 在修改完 Nginx 配置文件后,先測(cè)試配置文件是否有語法錯(cuò)誤:
      sudo nginx -t
      
  2. 重載 Nginx

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

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

其他注意事項(xiàng)

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

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

    sudo semanage port -a -t http_port_t -p tcp 8082
    
  3. 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;
        }
    }
    

總結(jié)

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

如果你有更多問題或需要進(jìn)一步的幫助,請(qǐng)隨時(shí)查閱 Nginx 官方文檔或?qū)で笊鐓^(qū)支持。

參考資料

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

到此這篇關(guān)于Nginx中指令server_name詳細(xì)使用指南的文章就介紹到這了,更多相關(guān)Nginx server_name使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx配置解決NetCore的跨域問題

    Nginx配置解決NetCore的跨域問題

    跨域資源共享(CORS)標(biāo)準(zhǔn)新增了一組?HTTP?首部字段,允許服務(wù)器聲明哪些源站有權(quán)限訪問哪些資源,這篇文章主要介紹了Nginx配置解決NetCore的跨域問題,需要的朋友可以參考下
    2022-07-07
  • 銀河麒麟(Kylin)離線安裝Nginx并部署多服務(wù)完整步驟

    銀河麒麟(Kylin)離線安裝Nginx并部署多服務(wù)完整步驟

    這篇文章主要介紹了銀河麒麟(Kylin)離線安裝Nginx并部署多服務(wù)的相關(guān)資料,包括依賴包下載、HTTPS配置、多端口站點(diǎn)部署等步驟,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-02-02
  • Nginx中sub_filter 配置使用小結(jié)

    Nginx中sub_filter 配置使用小結(jié)

    sub_filter?是一個(gè)用于替換響應(yīng)內(nèi)容的模塊,本文主要介紹了 Nginx中sub_filter 配置使用小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • 詳細(xì)nginx多域名配置的方法

    詳細(xì)nginx多域名配置的方法

    Nginx綁定多個(gè)域名,可通過把多個(gè)域名規(guī)則寫一個(gè)配置文件里實(shí)現(xiàn),也可通過分別建立多個(gè)域名配置文件實(shí)現(xiàn),為了管理方便,建議每個(gè)域名建一個(gè)文件,有些同類域名則可寫在一個(gè)總的配置文件里。下面這篇文章就來詳細(xì)看看nginx多域名配置的方法,有需要的朋友們可以參考。
    2016-12-12
  • Nginx防止直接用IP訪問Web服務(wù)器的設(shè)置方法

    Nginx防止直接用IP訪問Web服務(wù)器的設(shè)置方法

    看了很多Nginx的配置,好像都忽略了ip直接訪問Web的問題,這樣理論上不利于SEO優(yōu)化,所以我們希望可以避免直接用IP訪問網(wǎng)站,而是域名訪問,具體怎么做呢,看下面
    2012-09-09
  • Nginx反向代理后端接口解決跨域沖突、預(yù)檢報(bào)錯(cuò)問題全流程

    Nginx反向代理后端接口解決跨域沖突、預(yù)檢報(bào)錯(cuò)問題全流程

    本文詳細(xì)記錄了作者如何通過Nginx配置優(yōu)化,解決多域名訪問后端接口、Nginx反向代理及后端自帶跨域配置導(dǎo)致的跨域問題,主要內(nèi)容包括分析問題根源、屏蔽后端跨域頭、配置多域名白名單、攔截OPTIONS預(yù)檢請(qǐng)求、常規(guī)接口統(tǒng)一附加跨域頭,并提供了完整的Nginx配置示例
    2026-04-04
  • Nginx中accept鎖的機(jī)制與實(shí)現(xiàn)詳解

    Nginx中accept鎖的機(jī)制與實(shí)現(xiàn)詳解

    這篇文章主要給大家介紹了關(guān)于Nginx中accept鎖的機(jī)制與實(shí)現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • 通過Nginx+Tomcat+Redis實(shí)現(xiàn)持久會(huì)話

    通過Nginx+Tomcat+Redis實(shí)現(xiàn)持久會(huì)話

    這篇文章主要介紹了通過Nginx+Tomcat+Redis實(shí)現(xiàn)持久會(huì)話的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-11-11
  • nginx+redis實(shí)現(xiàn)session共享

    nginx+redis實(shí)現(xiàn)session共享

    這篇文章主要為大家詳細(xì)介紹了nginx+redis實(shí)現(xiàn)session的共享,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Nginx使用try_files遇到的問題及解決

    Nginx使用try_files遇到的問題及解決

    這篇文章主要介紹了Nginx使用try_files遇到的問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-10-10

最新評(píng)論

普兰店市| 龙川县| 陇南市| 保靖县| 拉孜县| 东光县| 班玛县| 宾川县| 宁强县| 山西省| 大兴区| 武清区| 莎车县| 五华县| 东至县| 三门县| 滦平县| 渝北区| 洮南市| 永顺县| 汾阳市| 璧山县| 乐亭县| 平谷区| 建瓯市| 栾城县| 九龙县| 西青区| 郧西县| 聂荣县| 静安区| 隆回县| 西安市| 霍林郭勒市| 达日县| 六安市| 广宁县| 青川县| 兰州市| 曲周县| 大丰市|