我正在尝试将我的 rails 应用程序设置为特定子域。我正在使用带有 bitnami rubystack VM 的 ec2 实例,我使用它和服务器的 ip 开发了应用程序,所以我知道 rails 和应用程序可以正常工作。
${nginx-dir}/conf/nginx.conf
server {
listen 80 default_server;
server_name _;
server_name_in_redirect off;
proxy_intercept_errors on;
return 401;
}
include "/opt/bitnami/nginx/conf/vhosts/*.conf";
${nginx-dir}/conf/vhosts/backend.conf
upstream thin_instances {
server 0.0.0.0:3000;
server 0.0.0.0:3001;
server 0.0.0.0:3002;
fair;
}
server {
# port to listen on. Can also be set to an IP:PORT
listen 80;
server_name backend.mydomain.com;
root /opt/bitnami/projects/myappname/public;
location / {
proxy_pass http://thin_instances;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
if (!-f $request_filename) {
proxy_pass http://thin_instances;
break;
}
}
}
这是我发帖或向域名发出请求时得到的结果
<html>
<head><title>401 Authorization Required</title></head>
<body bgcolor="white">
<center><h1>401 Authorization Required</h1></center>
<hr><center>nginx/1.2.4</center>
</body>
</html>
答案1
需要注意两件事:
server
中的块取代nginx.conf
了您的自定义服务器定义,因为该块可能在包含自定义配置之前使用(与 Host 标头匹配的第一个服务器部分,因为它在这里是一个通配符,将是使用的配置,除非您设置server_name ""
)。由于document_root
未在默认服务器块中设置,它将默认为类似于的内容,/var/www
这可能不是您想要的。- 请记住,大多数发行版中的默认 nginx 配置可能包括来自的所有 .conf 文件
/etc/nginx/sites-enabled
。您可能希望在该目录中创建一个指向 .conf 文件的符号链接/etc/nginx/sites-available
。(如果您从 nginx.conf 中删除了其他所有内容,例如,您的列表是 nginx.conf 的逐字内容,那么您可能希望include /etc/nginx/sites-enabled/*;
在末尾出现类似这样的内容。
答案2
我必须指出,blackbox222 提供的答案帮助我确定了问题的根源。最后,我更换了我的 DNS 提供商,换了一个可以正确配置 A 记录并且不会使用某种奇怪的重定向的提供商。
TL;DR:确保您的 DNS 配置正确