如何配置nginx,在同一台机器上运行apache和节点js?
我在想如何设置nginx
在同一台服务器上同时运行apache(lamp)和node.js。如何配置nginx,在同一台机器上运行apache和节点js?
我不是一个服务器爱好者的家伙,但最近2周我学到了很多东西。
我看到了,我可以做的内容交换机HAProxy
如下:因为我已经使用nginx
我认为这将是更好地使用它wordpress and node.js
但是。
任何教程?或小费?
如果您在PHP上编写了单个站点,并且您希望启用socket.io,则可以绑定80端口(默认HTTP端口)上的nginx,8080上的Apache和3000上的Node.js服务器(Apache和节点可能有其他)。
下面是nginx的配置:
http {
#... some directives ...
map $http_upgrade $connection_upgrade { #required for websockets
default upgrade;
'' close;
}
#... some more directives ...
}
server {
listen 80;
server_name your-wordpress-site.com;
root /path/to/site/root;
index index.php index.html index.htm;
location/{
try_files $uri $uri/ /index.php;
}
location /socket.io {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; #these two headers are ...
proxy_set_header Connection $connection_upgrade; #...required for websockets
}
location ~ \.php$ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
location ~ /\.ht {
deny all;
}
}
因此,你只需要代理时请求的URI与/socket.io
开始节点。
我从来没有使用WordPress,所以我可以100%确定它将在PHP端没有任何问题的情况下工作。但我配置nginx与socket.io 100K次,它始终完美。
编辑
如果此配置不工作,你可以尝试改变这种方式:
location/{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
location /socket.io {
#paste here socket.io section from first example
}
location ~ \.(js|css|png|jpe?g|gif)$ {
root /path/to/site/root;
}
在过去location
的正则表达式,你应该列出所有静态文件“的扩展,你想由nginx提供服务。
nginx,apache和node.js都是他们自己独立的服务器。它们是完全独立于彼此的原子实体。
在apache或nginx作为node.js服务器前的代理服务器存在(很常见)的情况。所以你将有两台服务器在同一台机器上同时运行。需要注意的是,它们将在不同的端口上运行。
很可能让nginx,apache和node.js同时在同一台机器上运行,但它们必须在不同的端口上运行。
但是你的问题“我如何设置nginx在同一台服务器上同时运行apache(lamp)和node.js”并没有什么意义,因为nginx并不运行apache或node.js.
你[不需要Apache和nginx](http://www.wikivs.com/wiki/apache_vs_nginx)。只需使用nginx。 –