我在 aws 云上启动了一个 node.js 服务器,服务器的位置是 /home/ubuntu/home/fablab。我可以使用 nginx 在端口 80 启动我的 node.js 服务器,一切正常。
然后我关注教程为了在服务器上运行 node.js 和 nginx,我将 node.js 端口重新配置为 61337,在 /etc/nginx/sites-available 文件夹下创建一个 fablab.conf,然后 ln -s /etc/nginx/sites-available/fablab.conf /etc/nginx/sites-enabled/fablab.conf。这是我的 fablab.conf
server {
listen 80;
server_name fablab;
location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico) {
root /home/ubuntu/node/fablab/public;
access_log off;
expires max;
}
client_max_body_size 16M;
root /home/ubuntu/node/fablab;
index /home/ubuntu/node/fablab/public/forum.html;
location / {
access_log off;
proxy_pass http://127.0.0.1:61337;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
#proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
# websockets support
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
}
}
我重新加载并重新启动nginx,当我转到服务器IP地址和端口80时,页面仍然是nginx的欢迎页面。
为什么到目前为止它不起作用,我错过了一切?我认为 fablab.conf 的关键是,proxy_pass http://127.0.0.1:61337
已经是了吗?
我有两个困惑
我是否必须使用 /etc/nginx/sites-enabled 中的 default.conf,其他一些名称也可以?
在 conf 文件中,server_name 应该是主机名,如果我现在只有 IP 地址,没有主机名,该如何处理这个主机名。因为它在 AWS 上,我是否需要将其填写为我的 aws 服务器的域名,如 ec2-24-210-148-112.us-west-2.compute.amazonaws.com
在里面教程conf 文件中的 server_name 是这样说的:
确保将域的 DNS 设置上的 A 记录设置为服务器的 IP 地址。
您可以使用命令测试是否设置正确
dig
:dig yourdomain.com
这是什么意思?我该怎么做
答案1
您的配置似乎正在使用虚拟主机;换句话说,nginxserver{..}
根据请求指定的主机决定“哪个”块与请求匹配。如果指定的主机名与任何 server_name 都不对应,您将最终得到默认的捕获所有站点。
您的主机名不是有效的 DNS 名称,但不必担心 - 输入fablab(/etc/hosts
winderz 将其放在 Windows\System 32\drivers\etc 中)类似这样的内容(指定您的 Web 服务器的 IP):
192.168.100.17 fablab
这应该允许您的主机将 fablab 解析为该 IP,然后 NGINX 应该能够将您的请求路由到正确的服务器。
希望能帮助到你!