AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1046075
Accepted
LordGoats
LordGoats
Asked: 2020-12-15 02:03:07 +0800 CST2020-12-15 02:03:07 +0800 CST 2020-12-15 02:03:07 +0800 CST

Nginx 服务器块:子域与路径

  • 772

子域和位置路径示例有什么区别:

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 本身。我很想知道选择一种解决方案而不是另一种解决方案的注意事项是什么。

domain-name-system subdomain web-server configuration nginx
  • 2 2 个回答
  • 1315 Views

2 个回答

  • Voted
  1. unNamed
    2020-12-15T10:31:52+08:002020-12-15T10:31:52+08:00

    由于主题是 nginx 配置,如果两个域都指向同一个 IP/服务器,则没有 dns 级别分离。
    不同之处在于,哪些域是可用/处理的路径。
    您可以将多个域配置为具有相同位置但一个域不同。这是 的主要用途server_name。

    location块是域名/IP 之后的 URL 部分。
    http://www.example.com/location/ 您可以在不同的位置块/URL 中提供不同的本地路径。

    使用 dns 可以实现的功能与 nginx 配置不同。
    DNS 循环使负载平衡和高可用性成为可能。
    基于地理位置的解析允许更快地交付内容。

    这实际上取决于您想要实现的目标。

    • 2
  2. Best Answer
    CA_Tallguy
    2020-12-15T13:34:01+08:002020-12-15T13:34:01+08:00

    如果需要,您可以告诉 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

    子域不是路径。它们是完全不同的东西。因此,尝试比较和对比它们表明您的理解偏离了轨道。

    也许您在过去的某个地方有一个子域,其中一个目录用于子域,另一个目录用于主域。这些是您的 docroot,这只是一些基于 Web 的服务器管理工​​具默认配置的方式。子域和路径之间没有内在关联,除非您(或某些工具或系统管理员)创建一个。

    您可以将任何域或子域(或您在位置块中设置的任何路径)映射到文件系统中的 /any/path/you/want。

    位置是关于 PATHS的......再次在这里,在 NGINX 找到与服务器块匹配的请求之后,它正在监视与 HTTP 请求中的路径匹配的请求。

    /thispath /thatpath /foo /bar 或 /foo/bar/on/thatpath 或者您可以使用通配符和正则表达式。您可以配置不同的文件扩展名以从不同的目录提供服务,或者位置的常见用途是告诉 NGINX 如何处理某些文件类型,例如 PHP。

    这里给出了几个示例配置:http: //nginx.org/en/docs/beginners_guide.html

    如果您觉得这有帮助,请点赞或标记为解决方案。谢谢!

    • 2

相关问题

  • Solaris DNS

  • resolv.conf 在经过一段时间后被更改

  • 为什么有些网站的网址中没有“www”就无法显示?[关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve