使用NGINX在端口80上为使用虚拟主机的Amazon EC2上托管的域的node.js应用程序提供HTTP流量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用NGINX在端口80上为使用虚拟主机的Amazon EC2上托管的域的node.js应用程序提供HTTP流量相关的知识,希望对你有一定的参考价值。
我使用apache virualhost在运行bitnami wordpress的Amazon EC2上托管了2个域
- wordpres.com>'/ apps / wordpress'
- website.com>'/ apps / website'
我在'/ apps / website / graph'中创建了一个node.js图形应用程序
我希望在website.com/graph上访问此应用程序
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: true }));
app.set('view engine', 'ejs');
app.get('/graph', function (req, res) {
res.render('index');
});
app.post('/graph', function (req, res) {
console.log(req.body.speed + " " + req.body.freq);
res.render('index');
})
var port = 3000;
app.listen(port, function () {
console.log('Server Running on port ' + port)
});
服务器在website.com:3000/graph以及wordpress.com:3000/graph上运行良好
问题1:我如何才使它仅在website.com:3000 / graph上运行?
问题的第二部分是如何使用nginx在端口80上提供HTTP流量以在website.com/graph上运行?
我在'/ sites-available'中创建了这个'graph'nginx文件,并在'/ sites-enabled'中链接:
server {
listen 80;
server_name website.com;
location /graph{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:3000/graph;
}
}
然后我重新启动了nginx,但是当我访问website.com/graph时它没有用。
问题2:如何使此HTTP流量工作并且仅在website.com/graph上工作?
我在这里做错了什么或错过了什么?我是一名前端设计师,我对服务器端的经验很少,所以请原谅无知:)
作为参考,我正在关注这个tutorial。
提前致谢。
nginx.conf
bitnami@ip-172-..-.-..:/etc$ cat nginx/nginx.conf
user www-data;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/x-javascript text/xml appli cation/xml application/xml+rss text/javascript;
##
# nginx-naxsi config
##
# Uncomment it if you installed nginx-naxsi
##
#include /etc/nginx/naxsi_core.rules;
##
# nginx-passenger config
##
# Uncomment it if you installed nginx-passenger
##
#passenger_root /usr;
#passenger_ruby /usr/bin/ruby;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachephpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}
@PulledBull和我在聊天中一起解决了这个问题。他们有以下Apache配置:
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot "/opt/bitnami/apps/wordpress/htdocs"
Include "/opt/bitnami/apps/wordpress/conf/httpd-app.conf"
</VirtualHost>
<VirtualHost *:80>
ServerName other.domain
ServerAlias www.other.domain
DocumentRoot "/opt/bitnami/apps/is/htdocs"
ErrorLog "logs/otherdomain-error_log"
CustomLog "logs/otherdomain-access_log" common
</VirtualHost>
<VirtualHost *:443>
ServerName domain.com
ServerAlias www.domain.com
</VirtualHost>
我们通过编辑现有配置而不是使用NGINX解决了这个问题。我们在每个虚拟主机中添加了以下行,我们希望Node.js应用程序可用:
ProxyPass /traingraph 127.0.0.1:3000
我们只想在other.domain
上访问/ traingraph,所以我们最终得到了以下配置:
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot "/opt/bitnami/apps/wordpress/htdocs"
Include "/opt/bitnami/apps/wordpress/conf/httpd-app.conf"
</VirtualHost>
<VirtualHost *:80>
ServerName other.domain
ServerAlias www.other.domain
DocumentRoot "/opt/bitnami/apps/is/htdocs"
ErrorLog "logs/otherdomain-error_log"
CustomLog "logs/otherdomain-access_log" common
ProxyPass /traingraph 127.0.0.1:3000
</VirtualHost>
<VirtualHost *:443>
ServerName domain.com
ServerAlias www.domain.com
</VirtualHost>
以上是关于使用NGINX在端口80上为使用虚拟主机的Amazon EC2上托管的域的node.js应用程序提供HTTP流量的主要内容,如果未能解决你的问题,请参考以下文章
在端口 80 上为 Tomcat 和在 8080 上的 Apache 使用相同的 SSL 证书
使用 apache 端口 8080 在 xampp 上为 zendframework 设置虚拟主机