Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 无法在nodejs和nginx中提供静态文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个nodejs博客应用程序.我也使用Nginx反向代理服务它.问题是我无法使用该应用程序加载静态文件.我在以下文件中看到了我配置的ngix.但由于某种原因,当我重定向到mysite.com/blog我无法加载静态文件,但在mysite:port / blog我可以.

这是Nginx.config文件

@H_696_9@server { listen *:80; server_name www.georgegkas.discrete.gr georgegkas.discrete.gr; root /var/www/georgegkas.discrete.gr/html; index index.PHP index.html index.htm; LOCATIOn / { try_files $uri $uri/ =404; } LOCATIOn ^~ /web-class.gr/ { try_files $uri $uri/ =404; if (!-e $request_fileName){ rewrite ^(.*)$/index.html break; } } LOCATIOn /blog { root /var/www/georgegkas.discrete.gr/html/GeorgeGks-Blog/app/PUBLIC; try_files $uri $uri/ @nodejs_blog; expires max; access_log off; } LOCATIOn @nodejs_blog { 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_pass http://127.0.0.1:8081; } }

我的app.js文件

@H_696_9@/********************** APP DEPENDENCES AND CONfigURES ************************/ // Include required modules var compression = require('compression'); var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var MysqL_db = require('./models/database/MysqL'); var Helper = require('./models/utils/functions'); var util = require('util'); require('./models/utils/extend_prototype'); // Include global configure file var GLOBAL_VAR = require('./config/global'); // Include environmental specific configure file switch (process.env.NODE_ENV) { case 'development': var ENV_VAR = require('./config/dev'); app.localS.Url_prefix = ENV_VAR.URL_PREFIX_PATH; break; case 'production': var ENV_VAR = require('./config/production'); app.localS.Url_prefix = ENV_VAR.URL_PREFIX_PATH; break; default: console.error("Unrecognized NODE_ENV: " + process.env.NODE_ENV); process.exit(1); } // Configure express static files and template language to use app.set('views',__dirname + '/views'); app.set('view ENGIne','pug'); app.use(express.static('public')); // Configure the middlewares app.use(compression()); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); // Set global app variables var LAST_RECEIVED_POST_ID = 0; // Database connection var MysqL = new MysqL_db({ host: ENV_VAR.MysqL.host,user: ENV_VAR.MysqL.user,password: ENV_VAR.MysqL.password,database: ENV_VAR.MysqL.database }); // 'Can't set headers after they are sent',fix app.use(function(req,res,next) { var _send = res.send; var sent = false; res.send = function(data) { if (sent) return; _send.bind(res)(data); sent = true; }; next(); }); /********************** APP DEFINED MIDDLEWARES *******************************/ // -- Index Middleware -- // 1. Get Feature post // 2. Get other posts by date // 3. update LAST_RECEIVED_POST_ID // 4. request blog admin profile // 5. Render the index page app.get(ENV_VAR.URL_PREFIX_PATH + '/',function(req,res) { MysqL.SELEct_post('featured',function(err,featured_post) { if (err) throw err; MysqL.SELEct_post({ status: 'published',limit: 10 },posts_res) { if (err) throw err; var posts = []; if (posts_res.length > 0 || featured_post.length > 0) { posts = Helper.prepare_index_post_data(posts_res,featured_post[0]); LAST_RECEIVED_POST_ID = posts[posts.length - 1].post_ID; } MysqL.SELEct_author({ role: 'admin',email: GLOBAL_VAR.ADMIN },author_res) { if (err) throw err; res.render('index',{ _POST_LIST: posts,_ADMIN_AVATAR: author_res[0].author_avatar }); }); }); }); }); /********************* HANDLE COMMON http ERRORS *****************************/ app.get('/404',next) { next(); }); app.get('/403',next) { var err = new Error('You have no permission to enter that area.'); err.status = 403; next(err); }); app.get('/500',next) { next(new Error('keyboard cat!')); }); app.use(function(req,next) { res.status(404); res.render('errors/404'); }); /*********************** START THE APP **************************************/ app.listen(GLOBAL_VAR.PORT,function() { console.log('The Wall personal blog by George G. Gkasdrogkas.'); console.log('Listening on port ' + GLOBAL_VAR.PORT + '!'); });

错误配置了什么?

解决方法

示例代码

@H_696_9@upstream nodejs { server localhost:3000; } server { listen 8080; server_name localhost; root ~/workspace/test/app; LOCATIOn / { try_files $uri $uri/ @nodejs; } LOCATIOn @nodejs { proxy_redirect off; proxy_http_version 1.1; proxy_pass http://nodejs; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-ForWARDed-For $proxy_add_x_forWARDed_for; } }

你可以查看this

try_files $uri / $uri @nodejs;应该是try_files $uri $uri / @nodejs;

并且您可能希望服务器中的另一个位置块用于静态文件.

@H_696_9@LOCATIOn /static { alias /path/to/static/files; }

Then你可以在localhost:8080 / static / some_file.css上点击文件

大佬总结

以上是大佬教程为你收集整理的node.js – 无法在nodejs和nginx中提供静态文件全部内容,希望文章能够帮你解决node.js – 无法在nodejs和nginx中提供静态文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。