首页 > 解决方案 > nginx:有什么办法可以避免在 nginx 配置文件中写入服务器 IP 地址?

问题描述

我在一个简单的 express 应用程序中使用 nginx 作为反向代理。在我的配置文件中,我使用了服务器 ip( http://45.33.97.232/ ) 作为 server_name。

但是有什么方法可以避免在这个文件中写入实际的服务器 ip 而不会破坏任何东西?

server {
    listen 80 default_server;
    server_name 45.33.97.232;

location / {
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://45.33.97.232:3000; #port where you are serving your express app.

  }
}

标签: javascriptnode.jsexpressnginx

解决方案


是的。通过default_server在指令中设置标志listen并将服务器名称设置为任何无效的域名。通常_在 nginx 示例配置文件中使用该名称,但这可以是任何无效的域名,例如!

server {
    listen 80 default_server;
    server_name _;

    ...
}

有关这方面的更多信息,请参阅http://nginx.org/en/docs/http/server_names.html#miscellaneous_names


请注意,有一个特殊的服务器名称具有其他含义。如果您需要为不发送Host标头的客户端(例如 HTTP/1.0 客户端)提供服务,则使用空字符串表示此服务器块是为此类客户端提供服务的块。因此 server_name 可以设置为两个双引号 ( "") 来表示空字符串:

server {
    listen 80;
    server_name "";

    ...
}

请注意,虽然这不像_上面那样作为一个包罗万象的域名。相反,它会捕获带有空主机头的请求。


推荐阅读