javascript - 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.
}
}
解决方案
是的。通过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 "";
...
}
请注意,虽然这不像_
上面那样作为一个包罗万象的域名。相反,它会捕获带有空主机头的请求。
推荐阅读
- java - 在 Java 中从浮点变量的输出中删除小数
- laravel - Gmail 没有收到我的 Laravel 用户验证电子邮件
- python-3.x - 未能在 Scrapy 中将类作为参数传递
- ada - 通过强类型和运算符重载进行简单的单元检查
- node.js - 如何让我的 API 函数将“字符串”返回给 Redis SETEX 值
- reactjs - 如何从 React 中的 Map() 对象返回反应标签树?
- encryption - 使用带有公钥的 OpenPGP.js 加密字符串
- python - Pandas DataFrame - 从 .txt 文件创建多个列
- python - 如何替换包含 Python Panda 中某些单词的单元格中的值,例如 Excel 中的值?
- android - Facebook 兴趣广告未显示