簡體   English   中英

Nginx + node.js配置

[英]Nginx + node.js configuration

我需要為我的問題配置正確的Nginx。

假設nginx + nodejs服務器程序在同一台debian計算機上運行。 為簡單起見,我網站的域名只是webserver.com(和www.webserver.com作為別名)

現在,當有人在Internet上瀏覽“ webserver.com/”時,它將把請求傳遞給應該運行在特定端口(例如3000)上的nodejs應用程序。 但是圖像和css文件應由nginx作為靜態文件提供服務,並且文件結構應類似於webserver.com/images或webserver.com/css ..圖像+ css應由nginx如靜態服務器提供服務

現在變得棘手:但是,當有人在webserver.com/staticsite001或webserver.com/staticsite002上沖浪時,則僅應由Nginx服務器提供服務。 然后不需要nodejs。

對於nodejs服務器,我只是使用端口3000設置我的nodejs應用程序,例如,以接收來自nginx的繞過webserver.com/

用一種更易理解的語言來表示:當有人瀏覽webserver.com/staticsite001時,不應將其傳遞給節點應用程序。 僅當外部人可以看到它的第一個webserver.com/目錄內部時,才應將其傳遞給節點應用程序。 webserver.com/staticsite001應該僅由nginx獲得serverd。

如何,我該怎么做? Nginx配置的http和server塊應該是什么樣?

我對nodejs很熟悉。 但是我是nginx的新手,也是反向代理的新手。 謝謝

debian硬盤上的文件結構如下:

/ home / wwwexample / staticsite001(對於www.webserver.com/staticsite001/)僅由nginx處理/ home / wwwexample / staticsite002(對於www.webserver.com/staticiste002/)僅由nginx / home / wwwexample / images處理
/家庭/ wwwexample / CSS

在/ home / nodeapplication中是我的node js應用程序

此服務器塊應工作:

server {
    listen 80;
    server_name webserver.com www.webserver.com;

    root /home/wwwexample;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
    }

    location /staticsite001 {
    }

    location /staticsite002 {
    }

    location /images {
    }

    location /css {
    }
}

第一個location使nginx將所有內容都代理localhost:3000 在空location之后,指示nginx使用默認行為,即提供靜態文件。

將此代碼放入文件/etc/nginx/sites-available/my-server並在/etc/nginx/sites-enabled創建一個符號鏈接。 有一個default配置,您可以將其用作參考。

之后,您可以使用命令sudo /usr/sbin/nginx -t檢查配置。 如果一切正常,請使用/etc/init.d/nginx reload來應用新配置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM