简体   繁体   English

使用angular CLI为节点服务器设置Nginx

[英]Nginx setup for a node server using angular cli

I am having issues with Nginx, Node Server and Express. 我在Nginx,节点服务器和Express方面遇到问题。 I have deleted the default server block under /etc/nginx/sites-available and have added my own let's call it mikes-domain.com. 我已经删除了/ etc / nginx / sites-available下的默认服务器块,并添加了我自己的名字叫mikes-domain.com。 I have copied the contents of the dist folder to /var/www/mikes-domain.com/html. 我已将dist文件夹的内容复制到/var/www/mikes-domain.com/html。

server {
listen 80 default_server;
root /var/www/mikes-domain.com/html;
index index.html index.htm;
server_name: mikes-domain.com;
location /admin {
proxy_pass http://localhost:8082;
prody_http_version: 1.1;
proxy_set_header Upgrade $http_upgrade;
prody_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}

Node and Express Server File 节点和Express服务器文件

const express = require('express');
const path = require('path');
const http = require('http');
const bodyParser = require ('body-parser');
const api = require('./server/routes/api');
const app = express;
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.static(path.join(__dirname, 'node_modules')));
app.use(*/api', api);
app.set('trust proxy', true);
app.set('trust proxy', 'loopback');
const port = process.env.PORT || '8082';
http.createServer(app).listen(port);
console.log('Api listening on port ' + port);

When I visit mikes-domain.com/admin/ I am receiving this Cannot GET /admin/ but I am getting api works! 当我访问mikes-domain.com/admin/时,我收到此无法获取/ admin /的信息,但是我正在获得api的作品! which is what express should be displaying when I visit mikes-domain.com/admin/api/ 访问mikes-domain.com/admin/api/时快递应显示的内容

In nginx config you pass all requests from mikes-domain.com/admin to localhost:8082 Nginx配置中,您将所有请求从mikes-domain.com/admin传递localhost:8082

In Node Server: app.use('*/api', api) 在节点服务器中: app.use('* / api',api)

You do not config for default route in Node ( localhost:8082 ) , so in this case Node will show nothing with ( mikes-domain.com/admin ) 您没有在节点(localhost:8082)中配置默认​​路由,因此在这种情况下,节点( mikes-domain.com/admin )将不显示任何内容

You can config your router to handle request to /admin/api/ with template below, unless Node will show nothing. 您可以使用以下模板将路由器配置为处理对/ admin / api /的请求,除非Node不显示任何内容。

./server/routes/api.js ./server/routes/api.js

var router = express.Router()

// define the home page route
router.get('/', function (req, res) {
  res.send('Testing API')
})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM