Я пытаюсь заставить мой сервер обслуживать мой index.html для любых случайных параметров URL, используя путь node.js '*', но он обслуживает его только тогда, когда я захожу на сайт без параметров URL (пример.com). Если я захожу на example.com/random, он отправляет обратно «not GET / random»
Однако он работает просто отлично, когда я запускаю его на своей локальной машине. Но когда он работает на моем сервере за обратным прокси-сервером nginx, он не работает.
Большое спасибо за любую помощь, я действительно застрял.
Вот соответствующие частиМои файлы конфигурации по умолчанию для server.js и nginx:
#HTTP - redirect all traffic to HTTPS
server {
listen 80;
listen [::]:80 default_server;
server_name northernreachnh.com;
return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
location / {
proxy_pass "http://localhost:8080/";
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;
}
const express = require('express');
const app = express();
const nodemailer = require('nodemailer');
const port = process.env.PORT || 8080;
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static('public'));
app.get ('*', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
app.get ('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
// POST route from contact form
app.post('/contact', (req, res) => {
// Instantiate the SMTP server
const smtpTrans = nodemailer.createTransport({
host: 'xxxxxxx',
port: xxx,
auth: {
user: `xxxxx`,
pass: `xxxxx`
}
});
// Specify what the email will look like
const mailOpts = {
from: 'Your sender info here', // This is ignored by Gmail
to: `xxxxx`,
subject: 'New message from contact form',
text: `${req.body.name} (${req.body.tel}) says: ${req.body.email}`
};
// Attempt to send the email
smtpTrans.sendMail(mailOpts, (error, response) => {
if (error) {
res.sendFile(__dirname + '/error.html'); // Show a page indicating failure
}
else {
res.sendFile(__dirname + '/success.html'); // Show a page indicating success
}
});
});
app.listen(port, () => {
console.log("Server listening on Port 8080");
});