我目前有一个运行 Raspian OS 的树莓派,它是一个在端口 8080 上运行的 Node JS 服务器。然后我设置 NGINX 用作反向代理,将传入的端口 80 流量路由到我的 8080 服务器。
我试图让用户单击一个 HTML 按钮,然后调用 NodeJS 函数将他们重定向到谷歌。 现在我不认为问题出在代码上,因为如果我在本地计算机上运行服务器(不需要 nginx),一切都会正常工作。但是,当我尝试从本地计算机访问在 Raspberry Pi 上运行的服务器时:http://192.168.0.103/Authenticate.html可以使用按钮来运行 HTML 页面,但随后函数调用http://192.168.0.103/Authenticate.js出现 404 错误。
我认为这个反向代理设置有误,但我对此非常陌生,所以我不知道是什么问题。任何帮助都非常感谢。
NGINX 默认文件
{
listen 80;
listen [::]:80;
root /home/pi/Cortana;
server_name _;
location / {
proxy_pass http://127.0.0.1:8080;
try_files $uri 4uri/ =404;
}
}
OAuth测试.html
<form method="post" action="/Authenticate.js">
<input type="submit" value="Login with Reddit" >
</form>
OAuth测试.js
const http = require('http');
const request = require('request');
const fs = require('fs');
const express = require('express');
const app = express();
const server = http.createServer(app);
app.get('/', serveDefaultHTML);
app.get('/OAuthTest.html', serveAuthHTML);
app.post("/Authenticate.js", function(req, res){
console.log("Here");
redirecting(req, res);
});
server.listen(8080, function(){
console.log("Listening on http://localhost:8080");
});
function serveAuthHTML(req, res){
fs.readFile("OAuthTest.html", function(err, data){
if (err){
res.writeHead(404, {'Content-Type': 'text/html'});
res.end(err);
return;
}
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(data);
});
}
function serveDefaultHTML(req, res){
res.writeHead(200, {'Content-Type': 'text/html'});
res.write("Welcome to my server!")
res.end("Request url: " + req.url);
}
function redirecting(req, res){
console.log("Redirecting");
res.writeHead(301,
{Location: 'http://www.google.com'}
);
res.end();
}