gpt4 book ai didi

node.js - Linux:在 nginx 上设置 node.js

转载 作者:太空宇宙 更新时间:2023-11-04 10:12:52 25 4
gpt4 key购买 nike

我刚给自己买了一个新的树莓派 3,并在上面安装了带 Node 的 nginx。 nginx 网络服务器已启动并正在运行。但不知何故,我没有得到我的网站工作的 javascripts。我是否需要为我的网络服务器的每个位置启用 javascript,或者是否有可能以我只适用于我服务器上每个站点的方式设置 Node ?

在这里您可以看到我网站的目录层次结构:

#########################################
### Directories ###
#########################################
# /www/var/ #
# | - > index.html (the hub/mainpage) #
# | proj1/ #
# | | - > index.html (website 1) #
# | proj2/ #
# | | - > index.html (website 2) #
# | | - > js/somescript.js #
# | proj3/ #
# | | - > index.html (website 3) #
# | | - > js/anotherscript.js #
# | proj4/ #
# | | - > index.html (website 4) #
# | proj5/ #
# | | - > index.html (website 5) #
# | | - > js/morescript.js #
# | ... #
#########################################

当您访问我的网站 (http://strtpg.xyz) 时,会显示/www/var/中的主页。它是一种枢纽,我可以在其中访问服务器上托管的所有其他站点。您可以通过将其文件夹名称附加到链接来访问不同的站点:例如' http://strtpg.xyz/proj1 ' 或 ' http://strtpg.xyz/proj5 '.有些网站有 javascript,有些没有。

这是我来自 /etc/nginx/sites-available/ 的配置文件:

# Server configuration
#upstream pnkpnd {
# server localhost:3420;
# keepalive 8;
#}

server {
listen 0.0.0.0:80;
listen [::]:80;
server_name localhost;
index index.html index.htm;

location / {
root /var/www;
try_files $uri $uri/ =404;
# Default root of site won't exist.
#return 410;
}

location /strtpg {
root /var/www;
try_files $uri $uri/ =404;
}

location /dshbrd {
root /var/www;
try_files $uri $uri/ =404;
}

location /pnkpnd {
root /var/www;
try_files $uri $uri/ =404;
# proxy_http_version 1.1;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection 'upgrade';
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forward-For $proxy_add_x_Forwarded_for;
# proxy_set_header Host $http_host;
# proxy_set_header X-NginX-Proxy true;
# proxy_pass http://strtpg.xyz/;
# proxy_redirect off;
}

location ~ /\.ht {
deny all;
}
}

我尝试让 Node 与我的网站一起工作的所有内容都被注释掉了,所以我至少可以看到网站本身。

最佳答案

Node 通常用作监听端口的 Web 服务器,提供静态文件并具有将在服务器中运行 javascript 的 API 端点。为实现这一目标,开发人员使用 ExpressJS 等应用程序框架。

将 nginx 指向像 /var/www 这样的目录是错误的。

通常你必须像这样运行你的 NodeJS 应用

$ Node 应用程序.js

之后您的服务器将监听一个端口。假设在这种情况下是 3000

因此使用 curl http://localhost:3000/ 将获得您的根站点。在 app.js 中设置您的应用程序将提供的所有静态和动态内容是您的工作。示例:如果您想发送 index.html,您必须执行 sendfile

在 nginx 方面,您唯一需要做的就是创建一个反向代理。

现在 nginx 会将对 example.com 的所有请求代理到位于 http://localhost:3000

的 Node 应用程序服务器
server {
listen 80;

server_name example.com;

location / {
proxy_pass http://localhost:3000;
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;
}

}

关于node.js - Linux:在 nginx 上设置 node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47939140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com