我正在寻找有关如何简化问题的建议,以便我能够完全理解它,并发现如何对其进行故障排除。
我在DigitalOcean tutorial on installing Meteor on Ubuntu 14.04中使用了虚拟机中的桌面版Ubuntu,并使用SSH就像它是服务器一样。我已成功安装NginX并从我的主机查看NginX在虚拟机上提供的静态页面,使用重写规则来强制执行HTTPS协议:
server {
listen 80;
listen [::]:80;
root /var/www/my_app.net/html;
index index.html index.htm;
server_name my_app.net;
# redirect non-SSL to SSL
location / {
rewrite ^ https://$server_name$request_uri? permanent;
}
}
我还成功安装了所有其他依赖项并运行Meteor套件。当我在Ubuntu VM中打开Firefox并访问localhost:8080
时,我可以看到Meteor正常运行。
但是,当我从主机中的浏览器连接到VM服务器时,我仍然看到静态页面,而不是Meteor页面。
Meteor网站的配置文件包含以下设置:
# HTTPS server
server {
listen 443 ssl spdy;
server_name my_app.net;
# ... more stuff ...
# pass all requests to Meteor
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; # allow websockets
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-For $remote_addr; # preserve client IP
# this setting allows the browser to cache the application in a way compatible with Meteor
# on every applicaiton update the name of CSS and JS file is different, so they can be cache infinitely (here: 30 days)
# the root path (/) MUST NOT be cached
if ($uri != '/') {
expires 30d;
}
}
}
(完整版here)
我不喜欢货物狂热编程:我更喜欢理解我从教程中复制和粘贴的任何代码。
我了解行proxy_pass http://127.0.0.1:8080
旨在将我在localhost:8080
内部可以看到的输出映射到HTTPS端口443。
现在,我想从等式中删除Meteor站点(因为该部分正在运行)。我想使用提供给127.0.0.1:8080
的静态HTML页面创建一个简单的设置,以便我可以理解proxy_pass功能如何将页面传递到端口443。
如何设置配置文件以在localhost:8080
内部和https://my_meteor_app.net
外部显示简单的HTML页面?
答案 0 :(得分:0)
您可以添加一个侦听端口8080的新服务器块,并从某个目录中提供静态文件:
server {
listen 8080;
root /var/www/temporary/site;
index index.html index.htm;
# redirect non-SSL to SSL
location / {
try_files $uri $uri/;
}
}
假设您没有更改ssl终止块(侦听443并且代理传递到127.0.0.1:8080),那么上面的块应该在本地工作并部署到您的域。