2014-02-17 50 views
0

我在想如何设置nginx在同一台服务器上同时运行apache(lamp)和node.js。如何配置nginx,在同一台机器上运行apache和节点js?

我不是一个服务器爱好者的家伙,但最近2周我学到了很多东西。

我看到了,我可以做的内容交换机HAProxy如下:因为我已经使用nginx我认为这将是更好地使用它wordpress and node.js

但是。

任何教程?或小费?

+0

你[不需要Apache和nginx](http://www.wikivs.com/wiki/apache_vs_nginx)。只需使用nginx。 –

回答

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端没有任何问题的情况下工作。但我配置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提供服务。

+0

这有助于很多。我的意图是有一个WordPress的网站,并有一个node.js/socket.io聊天插件。虽然这个亚马逊服务器上存在的文件夹var/www不存在。你描述的情况是2个不同的网站。 –

+0

@NetaMeta编辑了我的帖子。请参阅修改 – Curious

+0

@NetaMeta再次编辑。删除所有多余的文字 – Curious

1

nginx,apache和node.js都是他们自己独立的服务器。它们是完全独立于彼此的原子实体。

在apache或nginx作为node.js服务器前的代理服务器存在(很常见)的情况。所以你将有两台服务器在同一台机器上同时运行。需要注意的是,它们将在不同的端口上运行。

很可能让nginx,apache和node.js同时在同一台机器上运行,但它们必须在不同的端口上运行。

但是你的问题“我如何设置nginx在同一台服务器上同时运行apache(lamp)和node.js”并没有什么意义,因为nginx并不运行apache或node.js.

相关问题