我看到: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:不知道端口??这里很重要?)上收到的每个请求都会重定向到内部ip,这就是为什么我不明白为什么我应该定义server_name。。
我希望能给一个从未使用过服务器的人一个更好的解释。
我对ubuntu和服务器配置非常陌生,所以这可能是一个非常明显的问题。
1)server_name
参数的原因是几个不同的域名都可以指向同一个IP地址。当浏览器连接到包含域名的URL时,它首先进行DNS查找以找到合适的IP地址。然后,它连接到该地址并建立HTTP连接,该连接包括一个由Host:
和URL中的域名组成的标头。这个头告诉服务器请求是针对哪个域的。
在正常情况下,服务器不会在Host:
标头中看到特定域名,除非DNS将该域名解析为其IP地址。因此,如果你在server_name
字段中输入"www.google.com",服务器看到它的唯一方法就是编辑你的hosts
文件,添加一个带有你的IP地址的"www.google.com"条目,因为这是你的操作系统的DNS解析程序要查找的第一个位置(当然,你的浏览器,但其他人的浏览器,总是会转到你的服务器,而不是谷歌的)。
如果你没有域名,你可以编造一些东西;如果您只通过数字IP URL访问它,服务器将永远不会真正看到它。
2) 80是HTTP服务器的默认端口:除非您在URL中明确指定另一个端口,否则将连接到端口80。一台服务器可以监听多个端口,但也可以让多台服务器监听多个港口。因此,服务器需要知道它应该监听哪些端口