2017-08-31 10 views
0

HTTPSを使用してexpressjsウェブサイトにNgInxリバースプロキシを使用しています。ウェブサイトはhttpsで問題なくアクセスされており、リクエストはNodejsサーバーに届いていますが、問題は静的コンテンツにあります。静的コンテンツのNgInx禁止されたエラーnodejs appリバースプロキシ

すべての静的コンテンツ(JS、CSS、画像、フォントなど)は403禁止されたエラーを投げています。私はアマゾンEC2およびCentOSのを使用しています

server { 
    listen 80; 
    listen 443 ssl; 
    ssl on; 
    ssl_certificate /home/ec2-user/certs/myapp.bundle.crt; 
    ssl_certificate_key /home/ec2-user/certs/myapp.key; 

    root /home/ec2-user/myapp; 

    server_name example.com; 
    access_log /var/log/nginx/nginx.vhost.access.log; 
    error_log /var/log/nginx/nginx.vhost.error.log; 

    location/{ 
     #try_files $uri $uri/ /index.php?$args ; 
     #try_files $uri $uri/ =404; 
     proxy_pass https://example.com: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; 
    } 
} 

以下は私のnginxの設定ファイルの内容です。 助けてください。前もって感謝します。

+0

ノードサーバーまたはngnixで静的コンテンツを提供していますか? – rckrd

+0

私はエクスプレスだけでなくnginxから静的なコンテンツを提供するために両方の方法を試みました。 –

答えて

0
location/{ 
     proxy_pass https://example.com: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; 
    } 

すべてのトラフィックをnodejsにリダイレクトしています。それは、expressjsが静的コンテンツを提供することを意味します。

静的ファイルを提供するには、Expressでexpress.static組み込みミドルウェア機能を使用します。

staticアセットを含むディレクトリの名前をexpress.staticミドルウェア関数に渡して、ファイルの直接配信を開始します。例えば、公共というディレクトリに静的ファイルを提供するために、次のコードを使用します。

app.use(express.static('public')) 
ここ

さらに詳しい情報:https://expressjs.com/en/starter/static-files.html

+0

私はすでにexpress.staticミドルウェアを使用しています。しかし、私はNgInxから静的コンテンツを提供したい。しかしそれは私に403を禁じます。 –

0

あなたのNodeJSアプリからサーバーに静的ファイルをしようとしているので、正しいアプローチではありませんあなたはNginxを使用しています。あなたはあなたがあなたの資産を使用しているかに基づいて、ルートフォルダを調整する必要があるかもしれません

location ~ \.(css|gif|png|jpe?g|ico|js|swf|ttf|woff) { 
    expires 30d; 
    root /home/ec2-user/myapp; 
    try_files $uri =404; 
} 

を設定へのブロックの下のようなものを追加します。しかし、/home/ec2-user/myappと同じものを使用している場合は、この行を追加することはできません。

+0

ありがとうございました。私はこれを試しましたが、静的コンテンツに対して403の禁止があります。私は私のパブリックフォルダにも755パーミッションを与えました。 –

+0

nginxログから完全なエラーを投稿するには、静的フォルダの上のすべての親フォルダが実行(chmod a + x)権限を持っていることを確認する必要があります –

関連する問題