1

我看到:http ://wellconsidered.be/post/10519707671/node-js-on-nginx和Node.js + Nginx - 现在怎么办?

但在他们的教程中说:

 server_name www.yoursite.com;

或者

 server_name yourdomain.com yourdomain;

但在我的情况下,我没有域,我在企业中的机器上有一个静态 IP(192.168.1.16)。我应该将 server_name 设置为 192.168.1.16 吗?但无论如何我也可以设置为 www.google.com?我无法理解这些限制或 server_name 变量究竟是什么。

我也看到

listen   80;
server_name www.yoursite.com;

为什么我在这种情况下听80?它到底是什么端口,本地服务器的端口还是什么?

我想 nginx 应该是服务器的全局路由器,并且在它的静态 ip(192.168.1.16:不知道端口??这很重要?)处收到的每个请求都会被重定向到内部 ips,这就是为什么我不明白为什么我应该定义 server_name ..

我希望为从未使用过服务器的人提供更好的解释。

我对 ubuntu 和服务器配置非常陌生,所以这可能是一个非常明显的问题。

4

1 回答 1

1

1)参数的原因server_name是几个不同的域名可以都指向同一个IP地址。当浏览器连接到包含域名的 URL 时,它首先会进行 DNS 查找以找到适当的 IP 地址。然后它连接到该地址并建立一个 HTTP 连接,该连接包括一个标头,Host:后跟来自 URL 的域名。该标头告诉服务器请求是针对哪个域的。

Host:在正常情况下,除非 DNS 将该域名解析为其 IP 地址,否则服务器不会在标头中看到特定域名。因此,如果您将“www.google.com”放在该server_name字段中,服务器将看到它的唯一方法是您编辑hosts文件以使用您的 IP 地址添加“www.google.com”条目,因为那是首先是您的操作系统的 DNS 解析器(当然,您的浏览器,但没有其他人的,总是会转到您的服务器而不是 Google 的)。

如果你没有域名,你可以随便编一个;如果您仅通过数字 IP URL 访问它,服务器将永远不会真正看到它。

2) 80 是 HTTP 服务器的默认端口:除非您在 URL 中明确指定另一个端口,否则将连接到端口 80。服务器可以监听多个端口,但也可以有多个服务器监听到多个端口。因此,服务器需要知道它应该监听哪些端口。

于 2012-10-02T10:59:23.257 回答