我在AWS EC2实例上运行了nginx 1.4.5服务器。我有两个配置文件:default.conf
和myapp.conf
。 default.conf
收听localhost,myapp.conf
收听myapp.mydomain.com
。
但是我发现即使我在浏览器中输入myapp.mydomain.com
,它也会加载default.conf
。我已更改log_format
文件中的nginx.conf
添加"$server_name"
字段以检查每个请求的服务器名称。我发现它总是localhost
。
有人对此有任何想法吗?
使用配置信息进行更新
nginx.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
...
}
myapp.conf
server {
listen 80;
server_name myapp.mydomain.com;
access_log /var/log/nginx/myapp.log;
location / {
add_header P3P 'CP="CAO PSA OUR"';
proxy_pass http://127.0.0.1:8080/myapp/;
set $ssl off;
if ($scheme = https) {
set $ssl on;
}
proxy_set_header X-Forwarded-Ssl $ssl;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
是的,我支持两个防火墙,一个是iptable,另一个是AWS内置的安全组
答案 0 :(得分:1)
有similar problem的人通过以下方式解决了问题:
我现在已经解决了这个问题,万一有人遇到和我一样的问题 与“
server_names_hash_bucket_size 64;
”中的关系/etc/nginx/nginx.conf.
该行默认已注释掉,因此我取消注释并重新启动 nginx现在工作正常。
答案 1 :(得分:0)
我假设你在同一台机器上运行浏览器和nginx。在这种情况下,myapp.mydomain.com
可能会解析为localhost
或127.0.0.1
,因此nginx认为它将转到localhost。
尝试将此添加到/ etc / hosts文件中:
<external IP of your host> myapp.mydomain.com
您还应该尝试从另一台计算机访问您的nginx服务器。