ssl 用于SSH Strapi后端的Nginx代理没有响应

u3r8eeie  于 2022-11-24  发布在  Nginx
关注(0)|答案(1)|浏览(155)

我目前正在虚拟机上使用Strapi作为后端为我的研究开发一个网络研究。虽然所有的运行都很顺利,但现在我要进行全面部署,我遇到了一个小问题,我似乎无法得到我的头周围。
前端已经在线,运行在Nginx(v.1.18.0)上。为了安全和最佳实践,我为我的域生成了一个SSL证书,并将所有HTTP请求重新路由到工作正常的HTTPS。
然而,Strapi仍然运行在localhost:1337上,没有HTTPS,这导致浏览器拒绝连接。作为回应,我按照Strapi的文档设置了一个代理(Nginx Proxying),但是当我试图 curl 代理时,我得到了一个未解决的主机错误。
我对ngnix和strapi很陌生。当我测试nginx -t时,它成功响应。然而,代理不工作。
下面,我的档案:
我的./config/env/production/server.js仍然非常基本,看起来如下:

  1. module.exports = ({ env }) => ({
  2. host: env('HOST', '127.0.0.1'),
  3. port: env.int('PORT', 1337),
  4. url: 'https://api.my-domain.com',
  5. app: {
  6. keys: env.array('APP_KEYS'),
  7. },
  8. });

/etc/nginx/配置文件中指定的文件类型

  1. # Strapi server
  2. upstream strapi {
  3. server 127.0.0.1:1337;
  4. }

我的/etc/nginx/sites-available/strapi.conf(在location中,我添加了return 200 'OK'用于测试..)

  1. server {
  2. # Listen HTTP
  3. listen 80;
  4. server_name api.my-domain.com;
  5. # Redirect HTTP to HTTPS
  6. return 301 https://$host$request_uri;
  7. }
  8. server {
  9. # Listen HTTPS
  10. listen 443 ssl;
  11. server_name api.my-domain.com;
  12. # SSL config
  13. ssl_certificate path/to/certificate/fullchain.pem
  14. ssl_certificate_key path/to/certificate/privkey.pem
  15. # Proxy Config
  16. location / {
  17. proxy_pass http://strapi/;
  18. proxy_http_version 1.1;
  19. proxy_set_header X-Forwarded-Host $host;
  20. proxy_set_header X-Forwarded-Server $host;
  21. proxy_set_header X-Real-IP $remote_addr;
  22. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  23. proxy_set_header X-Forwarded-Proto $scheme;
  24. proxy_set_header Host $http_host;
  25. proxy_set_header Upgrade $http_upgrade;
  26. proxy_set_header Connection "Upgrade";
  27. proxy_pass_request_headers on;
  28. return 200 "OK";
  29. }
  30. }

我将默认域更改为一个自定义文件-将继续在这里调用它默认thoguh:

  1. server {
  2. listen 443 ssl default_server;
  3. listen [::]:443 ssl default_server;
  4. include snippets/self-signed.conf;
  5. include snippets/ssl-params.conf;
  6. root /var/www/my-domain/html;
  7. # Add index.php to the list if you are using PHP
  8. index index.html index.htm index.nginx-debian.html;
  9. server_name my-domain.com www.my-domain.com;
  10. location / {
  11. # First attempt to serve request as file, then
  12. try_files $uri $uri/ =404;
  13. }
  14. }
  15. server {
  16. listen 80 default_server;
  17. server_name _;
  18. return 301 https://$host$request_uri;
  19. }
  20. server {
  21. listen 443 ssl ;
  22. listen [::]:443 ssl ;
  23. include snippets/self-signed.conf;
  24. include snippets/ssl-params.conf;
  25. root /var/www/my-domain.com/html;
  26. # Add index.php to the list if you are using PHP
  27. index index.html index.htm index.nginx-debian.html;
  28. server_name my-domain.com; # managed by Certbot
  29. location / {
  30. # First attempt to serve request as file, then
  31. # as directory, then fall back to displaying a 404.
  32. try_files $uri $uri/ =404;
  33. }
  34. ssl_certificate path/to/certificate/fullchain.pem
  35. ssl_certificate_key path/to/certificate/privkey.pem
  36. }

提前感谢!

      • 表带版本**:4.4.3
      • 操作系统**:Ubuntu 20.04.5语言版本
      • 数据库**:MySQL数据库
      • 节点版本**:版本18.10.0
      • NPM版本**:8.19.2
      • Yarn型号**:1.22.19
r6l8ljro

r6l8ljro1#

事实证明,遵循多个指南可以很快把任何Nginx配置变成一团乱麻。我检查了所有这些指南并清理了我的文件。最终的结果就像一个魅力:

  1. server {
  2. listen 443 ssl default_server;
  3. listen [::]:443 ssl default_server;
  4. include snippets/ssl-params.conf;
  5. ssl_certificate /etc/letsencrypt/live/certificate/fullchain.pem;
  6. ssl_certificate_key /etc/letsencrypt/live/certificate/privkey.pem;
  7. root /var/www/my-domain/html;
  8. index index.html index.htm index.nginx-debian.html;
  9. server_name my-domain.com www.my-domain.de;
  10. # Proxy Config
  11. location /strapi/ {
  12. rewrite ^/strapi/?(.*)$ /$1 break;
  13. proxy_pass http://strapi/;
  14. proxy_http_version 1.1;
  15. proxy_set_header X-Forwarded-Host $host;
  16. proxy_set_header X-Forwarded-Server $host;
  17. proxy_set_header X-Real-IP $remote_addr;
  18. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  19. proxy_set_header X-Forwarded-Proto $scheme;
  20. proxy_set_header Host $http_host;
  21. proxy_set_header Upgrade $http_upgrade;
  22. proxy_set_header Connection "Upgrade";
  23. proxy_pass_request_headers on;
  24. return 200 "OK";
  25. }
  26. }
  27. server {
  28. listen 80 default_server;
  29. listen [::]:80 default_server;
  30. server_name _;
  31. return 301 https://$host$request_uri;
  32. }
展开查看全部

相关问题