
子域和位置路徑有什麼區別
例子:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name xxxx.yyy.com;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
或者
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name yyy.com;
location / {
proxy_pass http://127.0.0.1:3000;
}
location /xxxx/ {
proxy_pass http://127.0.0.1:4000;
}
}
顯然,分離層級不同,第一個在 DNS 伺服器上分離,第二個請求方向發生在 nginx 本身。我很想知道選擇一種解決方案相對於另一種解決方案有哪些注意事項。
答案1
如果需要,您可以告訴 NGINX 回應 IP 位址或連接埠上的所有請求。配置中的子網域/網域僅限制來自特定「伺服器」組態區塊的回應。
地點有沒有什麼與網域/子網域有關,只不過它們依賴伺服器區塊中配置的任何內容。一般來說,對於 NGINX,您首先要配置網域和 IP 進行偵聽,然後完全忘記它。
您的第一個範例設定xxxx.yyy.com
=>http://127.0.0.1:3000
第二個範例設定yyy.com/xxxx
=>http://127.0.0.1:4000
您可以將範例 #1 合併到範例 #2 中,方法是將基底網域和子網域都放入 #2 的伺服器區塊中(如果您不關心這兩個路徑都適用於基底網域和子網域):
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name yyy.com xxxx.yyy.com;
location / {
proxy_pass http://127.0.0.1:3000;
}
location /xxxx/ {
proxy_pass http://127.0.0.1:4000;
}
}
因此,您可以看到,正如您所說,不存在「DNS 上的分離」——除非您將它們託管在不同的 IP 位址上。你唯一的分離是在小路上。
組合範例產生:
xxxx.yyy.com
=>http://127.0.0.1:3000
yyy.com
=>http://127.0.0.1:3000
yyy.com/xxxx
=>http://127.0.0.1:4000
xxxx.yyy.com/xxxx
=>http://127.0.0.1:4000
子域不是路徑。它們是完全不同的東西。因此,嘗試比較和對比它們表明您的理解偏離了正軌。
也許您過去在某個地方有過一個子網域,其中一個目錄用於子網域,另一個目錄用於主網域。這些是您的文件根,這只是一些基於 Web 的伺服器管理工具預設配置的方式。子網域和路徑之間不存在固有關聯,除非您(或某些工具或系統管理員)建立了關聯。
您可以將任何網域或子網域(或您在位置區塊中設定的任何路徑)對應到檔案系統中的 /any/path/you/want 。
位置取決於路徑……同樣,在 NGINX 找到與伺服器區塊相符的請求之後,它會監視與 HTTP 請求中的路徑相符的請求。
/thispath /thatpath /foo /bar 或 /foo/bar/on/thatpath 或您可以使用通配符和正規表示式。您可以配置不同的檔案副檔名以從不同的目錄提供服務,或者位置的常見用途是告訴 NGINX 如何處理某些檔案類型(例如 PHP)。
這裡給了幾個範例配置:http://nginx.org/en/docs/beginners_guide.html
如果您覺得這有幫助,請投票或標記為解決方案。謝謝!
答案2
由於主題是 nginx 配置,因此如果兩個網域都指向相同的 IP/伺服器,則不存在 dns 層級分離。
差別在於,哪些域中哪些路徑可用/處理。
您可以配置具有相同位置但一個域不同的多個域。這就是 的主要用途server_name
。
location
區塊是 URL 中網域名稱/IP 之後的部分。
http://www.example.com/location/
您可以在不同的位置區塊/URL 中提供不同的本機路徑。
使用 dns 可以實現的功能與 nginx 設定不同。
DNS 迴圈使負載平衡和高可用性成為可能。
基於地理位置的解析可以更快地交付內容。
這實際上取決於您想要實現的目標。