2014-02-17 86 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.

相關問題