如何解决在DigitalOcean上使用NGINX的ExpressJS上的路由错误和域名问题 问题1 问题2 Nginx.conf default.conf Express路由器 Express主要
在这一点上,我绝对要拔头发,以找出我做错了什么。我在第7天无法使用Express和Nginx正常工作。尝试使用我拥有的所有资源,转到我可以找到的每个教程,并遍历stackOverflow数百次,我仍然感觉自己陷入了死胡同,对错误之处感到困惑。
我所能到达的最远的地方是只能访问地址为http://<ip address>
的快递服务的单个页面。
问题1
有效的方法:只有http://< ip address >
中的router.get('/')
。
无效的内容:www.myDomain.app
或myDomain.app
都无法连接到我所服务的网页。
什么也不起作用: https://< ip address >
(https / ssl)
问题2
我所服务的第一页(在http://< ip address>
上有效。)当我尝试路由到/page1
或/page2
时,出现not found
错误。这似乎是express产生的错误。
Not Found
404
NotFoundError: Not Found
at /home/test/app.js:28:8
at Layer.handle [as handle_request] (/home/test/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/test/node_modules/express/lib/router/index.js:317:13)
at /home/test/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/test/node_modules/express/lib/router/index.js:335:12)
at next (/home/test/node_modules/express/lib/router/index.js:275:10)
at /home/test/node_modules/express/lib/router/index.js:635:15
at next (/home/test/node_modules/express/lib/router/index.js:260:14)
at Function.handle (/home/test/node_modules/express/lib/router/index.js:174:3)
at router (/home/test/node_modules/express/lib/router/index.js:47:12)
信息
小滴:NodeJS 12.18.0 on Ubuntu 20.04
域:
- NS记录:正确设置为digitalocean。
- A记录:
@
和www
->定向到我的IPv4
NodeJS:已使用Express
其他:Express-Generator
用于样板。
文件
Nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3,ref: POODLE
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
default.conf
位置: /etc/nginx/sites-available/
符号链接到: /etc/nginx/sites-enabled
作为文件:default
server {
listen 80 default_server;
listen [::]:80 default_server;
#listen 443 ssl default_server;
#listen [::]:443 ssl default_server;
# include snippets/snakeoil.conf;
root /home/empa/;
# index index.html index.htm index.nginx-debian.html;
# Enabling the above line seems to break NGINX for some reason.
server_name myDomain.app www.myDomain.app;
location ^~ /test/public/ {
# gzip_static on;
# expires 12h;
# add_header Cache-Control public;
}
location / {
proxy_pass http://localhost:3030/;
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;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
}
Express(路由器)
// =====================================
const express = require('express');
const router = express.Router();
const request = require('request');
const path = require('path');
const fs = require('fs');
const jp = require('jsonpath');
// =====================================
/* GET page1 */
router.get('/page1',function(req,res,next) {
res.render('index',{ title: 'Page 1',message: 'For the Love of God will you please work already' });
});
/* GET page2 */
router.get('/page2',next) {
res.render('',{ title: ' page2',message: 'Stack Overflow is my last hope. Im going crazy over this' });
});
module.exports = router;
Express(主要)
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var port = 3030;
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// view engine setup
app.set('views',path.join(__dirname,'views'));
app.set('view engine','hbs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname,'public')));
app.use('/',indexRouter);
app.use('/users',usersRouter);
// catch 404 and forward to error handler
app.use(function(req,next) {
next(createError(404));
});
// error handler
app.use(function(err,req,next) {
// set locals,only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
app.listen(port,function(){
console.log(`Test is listening on port ${port}`)
})
module.exports = app;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。