我想知道如何设置nginx
以在同一台服务器上运行apache(lamp)和node.js。
我不是服务器的精明人,但过去两周我学到了很多东西。
我看到我可以使用以下HAProxy
<{1}}进行内容切换:wordpress and node.js
但是因为我已经在使用nginx
,所以我认为最好使用它。
任何教程?或提示?
答案 0 :(得分:1)
nginx,apache和node.js都是他们自己独立的服务器。它们是完全相互独立的原子实体。
有(非常常见的)apache或nginx作为代理服务器位于node.js服务器前面的情况。因此,您将在同一台计算机上同时运行两台服务器。重要的是要注意它们将在不同的端口上运行。
nginx,apache和node.js很可能在同一台机器上同时运行,但它们必须在不同的端口上运行。
但你的问题“如何设置nginx以在同一服务器上同时运行apache(lamp)和node.js”并不真正有意义,因为nginx没有“运行”apache或node.js. / p>
答案 1 :(得分:1)
如果您在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方面没有任何问题。但是我用socket.io配置了nginx 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
的RegExp中,您应列出您希望由nginx提供的所有静态文件扩展名。