Điểm:0

Thay vào đó, Nginx http sang https chuyển hướng tải xuống tệp trống

lá cờ tm

Tôi đang cố chuyển hướng Laravel+vuejs+nuxtjs dự án từ http đến https nhưng khi tôi vào http://example.com hoặc http://www.example.com thay vào đó, một tệp trống đang được tải xuống

Tôi đã làm gì cho đến nay:

1- Nhận xét ứng dụng default_type/octet-stream và thêm default_type văn bản/html thay vào đó trong nginx.conf

2-xác định loại { } default_type "text/plain"; Trong địa điểm /{} của ví dụ.com.conf

Chuyển hướng 3-nginx với mã bên dưới

người phục vụ{
  nghe xx.xx.xx.xx:80;
    server_name example.com www.example.com;
  trả về 301 https://www.example.com$request_uri;
}

4- đã cố chuyển hướng nó bằng tệp .php với tệp example.com.conf sau:

       người phục vụ {
          nghe 37.152.191.249:80;
          server_name www.example.com example.com;

         access_log /usr/local/apache/domlogs/example.com.bytes byte;
        access_log /usr/local/apache/domlogs/example.com.log kết hợp;
        error_log /usr/local/apache/domlogs/example.com.error.log lỗi;

        gốc /home/example/public_html/;
        chỉ số index.php;

   địa điểm / {
loại { } default_type "text/plain";
    try_files $uri $uri/ /index.php?$query_string;

}

vị trí ~ \.php$ {
   fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    bao gồm fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  tắt fastcgi_intercept_errors;
    fastcgi_buffer_size 16k;
    fastcgi_buffers 4 16k;
    fastcgi_connect_timeout 300;
   fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
}


        vị trí ~* "/\.(htaccess|htpasswd)$" {từ chối tất cả;return 404;}

        disable_symlinks if_not_owner from=/home/example/public_html;
}

index.php trong mã public_html:

    $location = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    tiêu đề ('HTTP/1.1 301 được di chuyển vĩnh viễn');
    tiêu đề ('Vị trí: ' . $location);
    lối ra;

Không có cách nào ở trên hoạt động và sự cố vẫn tồn tại.

+Cấu Hình Hiện Tại :

báo cáo nginx -t:

nginx: cú pháp file cấu hình /etc/nginx/nginx.conf là ok
nginx: file cấu hình /etc/nginx/nginx.conf kiểm tra thành công

ví dụ.com.ssl.conf :

người phục vụ{
  nghe xx.xx.xx.xx:443 http2 ssl;
    server_name example.com;
        ssl_certificate /etc/pki/tls/certs/example.com.bundle;
        ssl_certificate_key /etc/pki/tls/private/example.com.key;
        ssl_protocols TLSv1.2;
        ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EE3CDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA!RC4:EECDH:!RC4:!aNULL :!eN$
        bật ssl_prefer_server_ciphers;

       ssl_session_cache được chia sẻ:SSL:10m;
       ssl_session_timeout 60m;
       trả về 301 https://www.example.com$request_uri;
}
       người phục vụ {
          nghe xx.xx.xx.xx:443 http2 ssl;
          server_name www.example.com;

         access_log /usr/local/apache/domlogs/example.com.bytes byte;
        access_log /usr/local/apache/domlogs/example.com.log kết hợp;
        error_log /usr/local/apache/domlogs/example.com.error.log lỗi;
        ssl_certificate /etc/pki/tls/certs/example.com.bundle;
        ssl_certificate_key /etc/pki/tls/private/example.com.key;
        ssl_protocols TLSv1.2;
        ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA!RC4:EECDH:!RC4:!aNULL :!eN$
        bật ssl_prefer_server_ciphers;

        ssl_session_cache được chia sẻ:SSL:10m;
        ssl_session_timeout 60m;

        gốc/nhà/ví dụ/lõi/công khai/;
        chỉ số index.php;

   địa điểm / {
  'nâng cấp' kết nối proxy_set_header;
    proxy_http_version 1.1;
    proxy_pass https://xx.xx.xx.xx:3000$uri;
    bật proxy_intercept_errors; # Để sử dụng lệnh error_page, lệnh này cần được bật
    error_page 404 = @php;
}

vị trí @php {
    try_files $uri $uri/ /index.php?$query_string;

}

vị trí ~ \.php$ {
   fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    bao gồm fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   tắt fastcgi_intercept_errors;
    fastcgi_buffer_size 16k;
    fastcgi_buffers 4 16k;
    fastcgi_connect_timeout 300;
   fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
}


        vị trí ~* "/\.(htaccess|htpasswd)$" {từ chối tất cả;return 404;}

        disable_symlinks if_not_owner from=/home/example/public_html;

        vị trí /.well-known/acme-challenge {
                default_type "text/plain";
                bí danh /usr/local/apache/autossl_tmp/.well-known/acme-challenge;
        }

        vị trí /.well-known/pki-validation {
                default_type "text/plain";
                bí danh /usr/local/apache/autossl_tmp/.well-known/acme-challenge;
        }
}


Ví dụ hiện tại.com.conf :

người phục vụ{
  nghe xx.xx.xx.xx:80;
    server_name example.com www.example.com;
  trả về 301 https://www.example.com$request_uri;
}

Tôi chưa thêm báo cáo nginx -T vì nó hiển thị các tệp cấu hình không liên quan từ các trang web khác.

Ngoài ra, máy chủ chạy nhiều trang web và các trang wordpress không gặp sự cố khi chuyển hướng bằng mã được cung cấp tại #3 để chuyển hướng nhưng khi nói đến CÁC trang web sử dụng nuxtjs , thay vào đó tôi nhận được một tệp trống được tải xuống.

Bất cứ sự giúp đỡ nào cũng được đánh giá cao

lá cờ us
Bạn hoàn toàn không cần thay đổi loại MIME để chuyển hướng. Bạn có chắc `example.com.conf` của mình có đúng `server_name` không? Tệp `example.com.conf` có hiển thị trong đầu ra `nginx -T` không?
Pc Monk avatar
lá cờ tm
Có, nó hiển thị trong nginx -T Tôi đã kiểm tra nó rất nhiều lần. (sau mỗi lần thay đổi). Và tôi đồng ý với bạn, việc thay đổi loại MIME là không cần thiết nhưng đáng để nó có thể được chuyển sang php-fpm thay vì được tải xuống
lá cờ us
Bạn có chắc địa chỉ IP trong chỉ thị `listen` là chính xác không? Nếu địa chỉ không khớp, thì nginx sẽ không sử dụng máy chủ ảo này.
Điểm:1
lá cờ tm

Tôi đã sao chép một trong các cấu hình nginx wordpress của mình và thay thế xxx một phần với tên miềnyyy với IP máy chủ

người phục vụ {
        nghe yyy.yyy.yyy.yyy:80;
        server_name xxx.com www.xxx.com;
  trả lại 301 https://xxx$request_uri;

        địa điểm / {
                try_files $uri $uri/ /index.php?$args;
                add_header Strict-Transport-Security "max-age=31536000";
                add_header X-XSS-Protection "1; mode=block" luôn luôn;
                add_header X-Content-Type-Options "nosniff" luôn;

                vị trí ~.*\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
                        hết hạn tối đa;
                }

                vị trí ~ [^/]\.php(/|$) {
                        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                        if (!-f $document_root$fastcgi_script_name) {
                                trả lại 404;
                        }

                        fastcgi_pass 127.0.0.1:9000;
                        fastcgi_index index.php;
                        bao gồm /etc/nginx/fastcgi_params;
                }

        }

        vị trí ~* "/\.(htaccess|htpasswd)$" {từ chối tất cả;return 404;}


        disable_symlinks if_not_owner from=/home/domainname/public_html;

        vị trí /.well-known/acme-challenge {
                default_type "text/plain";
                bí danh /usr/local/apache/autossl_tmp/.well-known/acme-challenge;
        }

        vị trí /.well-known/pki-validation {
                default_type "text/plain";
                bí danh /usr/local/apache/autossl_tmp/.well-known/acme-challenge;
        }
}

Nó được chuyển hướng đến https mà không cần tải xuống bất cứ thứ gì, tôi đã tua lại tất cả các thay đổi mà tôi đã thực hiện đối với nginx và php-fpm về mặc định của chúng.

Bây giờ nó đang hoạt động Nhưng tại sao?

sau khi chơi xung quanh nhận thấy việc thay đổi vị trí của cấu hình nginx đang hoạt động thành vị trí ~ \.php$ (cái tôi đã sử dụng trước đây) sẽ khiến vấn đề quay trở lại. Đúng vậy!

Không điều tra thêm tại sao vị trí ~ \.php$ làm KHÔNG PHẢI làm việc nhưng vị trí ~ [^/]\.php(/|$) làm.

Hy vọng nó giúp.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.