nodejs(express)で xxx.xxx.xxx.xxx:3000 にてwebサーバーを立ち上げています。
全面にnginxを置きたいのですが、パスの関係上うまく動いてくれません。
パスを調整することが可能ならばその方法がしりたいです。
- ファイル構成
/root/public/css/style.css
/root/public/js/javascript.js
/root/views/index.ejs
/root/app.js
nodejs express側 3000番ポートで起動
app.js
nodejs
1 2var express = require('express'); 3var app = express(); 4var ejs = require('ejs'); 5 6app.use('ejs',ejs.renderFile) 7app.use(express.static('public')); 8 9app.get('/bbb', function (req, res) { 10 res.render('index.ejs',{hoge: 'fuga'}); 11}); 12 13app.listen(3000, function () { 14 console.log('Example app listening on port 3000!'); 15});
publicフォルダの中身はcssフォルダやjsフォルダが作られており、その中に各cssやjsが入れてあります。
nginx側
nginx
1 upstream aaa { 2 server xxx.xxx.xxx.xxx:3000; 3 } 4 5 server { 6 listen 443; 7 server_name hoge-fuga; 8 9 ssl on; 10 ssl_certificate /etc/letsencrypt/live/hoge-fuga/fullchain.pem; 11 ssl_certificate_key /etc/letsencrypt/live/hoge-fuga/privkey.pem; 12 13 location /bbb { 14 proxy_pass http://aaa; 15 } 16 }
https://hoge-fuga/bbb
にアクセスするとcssやjavascriptが無効になった状態のindex.ejsが表示されてしまいます。
うまくいく例
app.js
nodejs
1 2var express = require('express'); 3var app = express(); 4var ejs = require('ejs'); 5 6app.use('ejs',ejs.renderFile) 7app.use(express.static('public')); 8 9app.get('/', function (req, res) { 10 res.render('index.ejs',{hoge: 'fuga'}); 11}); 12 13app.listen(3000, function () { 14 console.log('Example app listening on port 3000!'); 15});
nginx側
nginx
1 upstream aaa { 2 server xxx.xxx.xxx.xxx:3000; 3 } 4 5 server { 6 listen 443; 7 server_name hoge-fuga; 8 9 ssl on; 10 ssl_certificate /etc/letsencrypt/live/hoge-fuga/fullchain.pem; 11 ssl_certificate_key /etc/letsencrypt/live/hoge-fuga/privkey.pem; 12 13 location / { 14 proxy_pass http://aaa; 15 } 16 }
nodejs側、nginx側、両方ともパス /bbb
をやめて、 /
にすると、きちんとうまく表示されます。
ルートパス以外でもうまく連携させる方法をご存知のかたいらっしゃいましたらご教示いただけませんでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。