【发布时间】:2020-11-16 08:07:30
【问题描述】:
我有一个 MySQL 数据库和 React 前端,它们在开发中使用 Node 服务器连接两者。我有一个刚刚创建的 VPS,并且正在使用 Nginx 来控制集成。不幸的是,我是新手,当它在盒子上运行时无法连接到节点服务器。我知道它正在侦听正确的端口,因为netstat -tulpn 显示它是(见下文)。
我可以从我的笔记本电脑通过 SSH 直接连接到 MySQL 数据库,所以我知道它工作正常。就像我说的,前端加载但无法连接到服务器登录(见下文)。
我怀疑我的 Nginx 配置出错了,但在过去五个小时尝试了各种想法后,我不知所措。
Nginx 默认配置文件
server {
listen 443 default_server ssl;
#listen [::]:443 default_server ssl;
server_name thesystem.co.za;
#ssl_certificate /etc/letsencrypt/live/thesystem.co.za/fullchain.pem;
#ssl_certificate_key /etc/letsencrypt/live/thesystem.co.za/privkey.pem;
expires 0;
add_header Cache-Control public;
add_header Cache-Control no-store;
add_header Cache-Control no-cache;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options nosniff;
add_header 'Referrer-Policy' 'origin';
add_header X-XSS-Protection "1; mode=block";
add_header Set-Cookie "HTTPOnly; HttpOnly; Secure";
location / {
root /usr/share/nginx/html/thesystem;
}
location /integration/ {
charset_types application/json;
charset UTF-8;
proxy_pass http://localhost:8081/api/;
}
}
如果有人能够就我做错了什么提供一些见解,我将不胜感激。我有一个测试客户端在几个小时后开始,但我被困在最后一个障碍!
**** 更新 ****** 如果我在登录到盒子时直接使用 curl 访问服务器,我会收到响应,所以我知道它正在监听。就像我说的那样,我一定是在 nginx 配置上做错了,但我不知道是什么......
**** 包含 nginx.conf nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
#large_client_header_buffers 16 64k;
#client_max_body_size 100M;
# Added By Willie for security
ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers On;
ssl_ciphers ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS;
# Added By Willie, hide Nginx version
server_tokens off;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
gzip on;
gzip_disable "msie6";
gzip_comp_level 6;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_proxied any;
gzip_types
text/plain
text/css
text/js
text/xml
text/javascript
application/javascript
application/x-javascript
application/json
application/xml
application/rss+xml
image/svg+xml;
include /etc/nginx/conf.d/*.conf;
}
*** 第二次更新***
我已将default.conf 减少到最低限度,它不会重定向到网页或服务器的正确位置。我得到的只是一个 404 页面。
server {
listen 80 default_server;
server_name thesystem.co.za;
location / {
root /usr/share/nginx/html/thesystem;
}
location /integration/ {
charset_types application/json;
charset UTF-8;
proxy_pass http://localhost:8081/;
proxy_set_header Proxy "";
}
}
【问题讨论】:
-
您在 http 标头中使用了
charset_types吗?是 nginx 还是您的 nodejs 应用程序返回 404?在location /integration中放置一些静态且独立于 URL 的内容作为测试。 -
是的,我在标题中使用了
charset_types,它设置为application/json。我不确定如何在那里放置静态的东西,但会尝试。
标签: mysql node.js nginx routes