2017-12-22 7 views
0

私はちょうど自分自身に新しいラズベリー・ピー3を持っていて、そこにノードを持つnginxをインストールしました。 nginxウェブサーバが起動しています。しかし、どういうわけか私は私のウェブサイトの仕事のjavascriptを手に入れません。ウェブサーバーの各場所でJavaScriptを有効にする必要があるのですか、サーバー上のすべてのサイトで機能するようにノードを設定する可能性はありますか?Linux:nginxにnode.jsを設定する

######################################### 
###   Directories   ### 
######################################### 
# /www/var/        # 
# | - > index.html (the hub/mainpage) # 
# | proj1/        # 
# | | - > index.html (website 1)  # 
# | proj2/        # 
# | | - > index.html (website 2)  # 
# | | - > js/somescript.js    # 
# | proj3/        # 
# | | - > index.html (website 3)  # 
# | | - > js/anotherscript.js   # 
# | proj4/        # 
# | | - > index.html (website 4)  # 
# | proj5/        # 
# | | - > index.html (website 5)  # 
# | | - > js/morescript.js    # 
# | ...         # 
######################################### 

あなたは私のウェブサイト(http://strtpg.xyz)/ WWWの/ varのうちメインページに行く/示すbeeingてされています

ここでは、私のウェブサイトのディレクトリ階層を見ることができます。これは、サーバー上でホストされている他のすべてのサイトにアクセスできるハブのようなものです。リンクにフォルダ名を追加することで、さまざまなサイトにアクセスできます。 'http://strtpg.xyz/proj1'または 'http://strtpg.xyz/proj5'いくつかのサイトはjavascriptを持っており、いくつかはjavascriptを持っていません。

そして、これが/etc/nginx/sites-available/から私の設定ファイルである:

# Server configuration 
#upstream pnkpnd { 
# server localhost:3420; 
# keepalive 8; 
#} 

server { 
    listen 0.0.0.0:80; 
    listen [::]:80; 
    server_name localhost; 
    index index.html index.htm; 

    location/{ 
     root /var/www; 
     try_files $uri $uri/ =404; 
     # Default root of site won't exist. 
     #return 410; 
    } 

    location /strtpg { 
     root /var/www; 
     try_files $uri $uri/ =404; 
    } 

    location /dshbrd { 
     root /var/www; 
     try_files $uri $uri/ =404; 
    } 

    location /pnkpnd { 
     root /var/www; 
     try_files $uri $uri/ =404; 
#  proxy_http_version 1.1; 
#  proxy_set_header Upgrade $http_upgrade; 
#  proxy_set_header Connection 'upgrade'; 
#  proxy_set_header X-Real-IP $remote_addr; 
#  proxy_set_header X-Forward-For $proxy_add_x_Forwarded_for; 
#  proxy_set_header Host $http_host; 
#  proxy_set_header X-NginX-Proxy true; 
#  proxy_pass http://strtpg.xyz/; 
#  proxy_redirect off; 
    } 

    location ~ /\.ht { 
     deny all; 
    } 
} 

私がコメントアウトされて、私のウェブサイトでの作業ノードを取得するために試してみたので、私は、少なくとも、ウェブサイト自体を見ることができるすべてのもの。

+0

であなたのノードのアプリケーションサーバーにexample.comに行われたすべての要求?私はnodeJSへの接続を見つけることができません。あなたは私を混乱させました。 – Stamos

+0

私のサーバーにjavascriptを実行するのにnode.jsは必要ないのですか? – Jub

答えて

1

通常、ノードはポートをリッスンし、静的ファイルを処理し、サーバーでjavascriptを実行するAPIエンドポイントを持つWebサーバーとして使用されます。これを実現するには、ExpressJSのようなアプリケーションフレームワークを使用します。

/var/wwwのようなディレクトリへのnginxのポインティングが間違っています。

通常、あなたは、サーバーがポートに耳を傾けます。その後、この

$ node app.js

のようなあなたのNodeJSアプリを実行する必要があります。この場合、3000

ですので、curl http://localhost:3000/を使用すると、ルートサイトが取得されます。 app.jsの内部からのあなたの仕事は、アプリケーションが提供するすべての静的および動的コンテンツを設定することになります。例:index.htmlを送信する場合は、sendfileを実行する必要があります。

nginx側で行う必要があるのは、リバースプロキシを作成することだけです。

今nginxの意志プロキシhttp://localhost:3000このすべては、Node.jsのとどのように関連するかを

server { 
    listen 80; 

    server_name example.com; 

    location/{ 
     proxy_pass http://localhost:3000; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
    } 

} 
+0

JavaScriptを使用するすべての場所でプロキシ設定を行う必要がありますか?その場合、それぞれの場所で異なるポートが必要ですか? – Jub

+0

いいえ、必要はありません。あなたは理解が表面的であるため、 "何が"であり、どのように機能するかを読むことから始めなければなりません。 – Stamos

+0

来年のことを見てみるといいですね。 ^^それは、nginxを削除してapacheをインストールして、javascriptをサーバー側で実行できるようにする方がはるかに簡単だと思います。これは私の目標を今のところもっと簡単にすることができます。 – Jub

関連する問題