我可以提供静态网站内容并在同一ec2实例上运行节点服务器吗?我的ec2实例是一个t2.micro ubuntu 14.04映像。完成的任务:安装了Nodejs,npm。Nginx已安装配置。设置../../www/目录以通过nginx提供内容。
我有一个域xyz.com将其@值指向与实例关联的弹性IP。
将网站文件上载到目录。因此,现在如果我访问xyz.com,我将通过nginx获得我的网站内容。凉爽的。
但是无法访问节点应用程序。我的节点应用程序在端口3000上运行。
尝试添加
server {
root /var/www;
index: example.js
server_name _;
location / {
proxy_pass http://127.0.0.1:3000;
expires 30d; # not required
access_log off;
}
}
/ etc / nginx / sites-可用于指向节点服务器。
凉爽的 。现在xyz.com运行我的节点应用程序。但是现在无法访问任何网站内容:(并且,如果我尝试访问在Express路由中定义了路由的任何API,则服务器端将没有日志。只有nginx 404错误,例如:
xyz.com/myroute -404 nginx错误,适用于localhost:3000 / myroute
xyz.com/-返回为/设置的默认路由xyz.com:3000-不打节点服务器。没有日志。
许多在线资源建议重新路由安全区域中的端口80,以在运行节点的端口上提供内容。我可以用这种方式运行节点应用程序,但同样,整个网站也必须通过节点提供服务。
我想单独运行它们。
xyz.com-为我服务的网站
xyz.com:3000-允许我命中节点服务器是否应该将应用程序和网站分别放在两个不同的实例上?如何路由?
嗨,我正在运行类似的设置,但是使用Jetty服务器而不是Node。
下面是我的配置;
server {
listen 80;
root /var/www/html/;
index index.php index.html index.htm;
server_name my_domain;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name ;
include fastcgi_params;
}
location /app {
proxy_pass http://localhost:8080;
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;
}
}
据我了解,您仅需将位置/ app更改为您的应用程序路径,并且显然可以将proxy_pass指向正确的端口。
解决此问题的另一种方法是代理传递子域,并在nginx中具有2个虚拟服务器,例如app.mydomain.com和app2.mydomain.com。对于这种设置,请看一下;nginx反向代理多个后端
我相信您正在寻找我上面的那种设置。祝你好运。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句