代码之家  ›  专栏  ›  技术社区  ›  lsund

在http:> httpsngnx找不到静态内容之后

  •  0
  • lsund  · 技术社区  · 6 年前

    我有一个用NGIX服务的静态文件的工作设置,使用HTTP。

    之后,当我切换到HTTPS时,将端口从80更改为443,以及添加SSL证书和密钥,Web服务器不再能找到静态文件。对于所有静态文件,我得到404个响应。这是我的nginx配置文件:

    http {
    
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
        sendfile on;
        keepalive_timeout 65;
    
    
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
        ssl_prefer_server_ciphers on;
    
    
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
    
        upstream http_backend {
                server 127.0.0.1:3001;
                keepalive 32;
        }
    
        server {
                listen       80;
                server_name  test.com;
    
                # Redirect to https
                location / {
                        rewrite ^ https://$host$request_uri permanent;
                }
        }
    
        server {
                listen 443 default_server ssl;
                server_name localhost;
                root /var/www/myblog/app/resources/public;
    
                ssl on;
                ssl_certificate /etc/nginx/certificate.crt;
                ssl_certificate_key /etc/nginx/key.pem;
    
                location / {
                        proxy_redirect off;
    
                        proxy_pass              http://http_backend;
                        proxy_set_header        Host $host;
                        proxy_set_header        X-Real-IP $remote_addr;
                        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_set_header        X-Forwarded-Host $server_name;
                        proxy_set_header        X-Forwarded-Proto https;
    
                        access_log /var/www/logs/myblog.access.log;
                        error_log /var/www/logs/myblog.error.log;
                }
    
                location ^~ /(css|js) {
                        root /var/www/myblog/app/resources/public;
                }
        }
    }
    

    我的访问日志:

    37.201.226.254 - - [26/Aug/2018:06:41:25 +0000] "GET /js/compiled/foo.js HTTP/1.1" 404 38 "https://www.test.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"    
    37.201.226.254 - - [26/Aug/2018:06:41:25 +0000] "GET /css/mui.css HTTP/1.1" 404 38 "https://www.test.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"           
    37.201.226.254 - - [26/Aug/2018:06:41:25 +0000] "GET /css/style.css HTTP/1.1" 304 0 "https://www.test.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
    

    文件在 /var/www/myblog/app/resources/public :配置为根目录。我从 /var/www/myblog/app .

    记住这是我第一次使用nginx。有人知道我忘记配置什么用HTTPS服务静态文件吗?我的操作系统是Linux。

    1 回复  |  直到 6 年前
        1
  •  0
  •   lsund    6 年前

    我通过随机反复试验发现了这个问题。因为某些原因,改变

            location ^~ /(css|js) {
                    root /var/www/myblog/app/resources/public;
            }
    

            location ~ ^/(css/|js/) {
                    root /var/www/myblog/app/resources/public/;
            }
    

    似乎有用。