Expressアプリをhttp://website.com/appnginx をリバース プロキシとして使用し、静的ファイルも提供します。
これは私の nginx 設定です:
upstream app {
server localhost:3333;
}
server {
listen 80;
server_name website.com www.website.com;
root /var/www/website.com;
index index.html index.htm;
location = / {
try_files $uri $uri/ =404;
}
location /app/ {
alias /var/www/app/static;
try_files $uri $uri/ @app;
}
location @app {
proxy_pass http://app;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
index.js ( にあります/var/www/app/static/
) は 経由で何らかのリソースを要求しますfetch("/info")
。
app.js(にある/var/www/app/
)は、上記のリソースを次のように配信するはずです。
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json())
app.get("/info", (req, res) => {
res.header("Content-Type",'application/json');
res.send(JSON.stringify(info));
})
app.listen(3333, () => {
console.log("Server listening at http://localhost:3333")
})
訪問するとhttp://mywebsite.com/app静的ファイルは nginx によって提供されますが、/info
404 が返されます。Nginx エラー ログ:「/var/www/website.com/info」が失敗しました (2: そのようなファイルまたはディレクトリはありません)エクスプレス アプリは実行中です ( $pm2 ls
-> ステータス「オンライン」)。
プロキシ設定が正しくないか、nginx とサーバーの動作について私の側で誤解があるのではないかと思います (これが私の最初のステップです)。アドバイスをいただければ幸いです。
答え1
そのためにはDNSエントリを作成する必要があります。
コンテンツの場所を指定し、サイトとしてサーバー名を追加し、場所にコンテンツを追加します。