这是我的/etc/nginx/nginx.conf
文件的一部分。 (我稍微修改了一下,以便不公开实际的IP地址或DNS条目,但你明白了。)
server { listen 80; server_name ec2-52-1-2-3.compute-1.amazonaws.com; location / { proxy_pass http://thumbor; } } server { listen 80; server_name 52.1.2.3; location / { proxy_pass http://thumbor; } }
根据本指南 ,我还有一个thumbor的upstream
部分。 这工作; 我可以通过http://ec2-52-1-2-3.compute-1.amazonaws.com/或通过http://52.1.2.3/访问它…
不过,我觉得它现在的设置方式有点脆弱。 如果IP地址改变怎么办? 或者如果DNS条目改变了呢? 我宁愿如果它只是响应80端口上的所有请求,而不pipe主机名。
所以我自然而然地尝试这样做:
server { listen 80; location / { proxy_pass http://thumbor; } }
正如你可以看到我所做的一样,把它分成了一个单独的server
部分,而不是两个,我从该部分删除了server_name
variables。 但不是像我希望的那样回应所有的请求,它不再有任何回应。 它会在404上的一切。
我如何设置一个通用服务器侦听器,就像我在这里描述的那样?
不需要正则expression式。 您可以通过将default_server
添加到listen指令来执行此操作,如下所示: listen 80 default_server;
。 这指向如果请求针对服务器IP但是没有主机名匹配时要应用的configuration。
等等…我意识到你可以使用正则expression式。 我结束了做我的单个server
部分:
server { listen 80; server_name ~^.+$; location / { proxy_pass http://thumbor; } }