Điểm:0

nginx sẽ không phục vụ hình ảnh qua https (403 Forbidden)

lá cờ cn

Tôi đã bối rối bởi vấn đề này trong một vài tháng nay. Trang web của tôi tải tốt bằng http, nhưng khi sử dụng https, chỉ có hình ảnh không tải. Tôi thấy lỗi này trong bảng điều khiển.

Không tải được tài nguyên: máy chủ phản hồi với trạng thái 403 (Bị cấm) /images/:1

Cấu hình máy chủ của tôi trông như thế này.

dữ liệu www của người dùng;
worker_processes tự động;
pid /run/nginx.pid;
bao gồm /etc/nginx/modules-enabled/*.conf;

sự kiện {
    công_nhân kết_nối 768 ;
}

http {
    ##
    # Cài đặt cơ bản
    ##

    gửi tệp trên;
    bật tcp_nopus;
    bật tcp_nodelay;
    keepalive_timeout 65;
    loại_hash_max_size 2048;
    #server_tokens tắt;

    bao gồm /etc/nginx/mime.types;
    ứng dụng default_type/octet-stream;

    ##
    # Cài đặt SSL
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Bỏ SSLv3, tham khảo: POODLE
    bật ssl_prefer_server_ciphers;

    ##
    # Cài đặt ghi nhật ký
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Cài đặt Gzip
    ##

    bật gzip;

    ##
    # Cấu hình máy chủ ảo
    ##

    bao gồm /etc/nginx/conf.d/*.conf;
    bao gồm /etc/nginx/sites-enables/*;
    chỉ số index.html;

    người phục vụ {
        server_name example.com www.example.com;

        root /home/client/example/public/;

        #được quản lý bởi Certbot
        nghe 443 ssl;
        ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
        bao gồm /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

        địa điểm / {
            chỉ số index.html;
        }
    }
}

Trong error.log, máy khách có địa chỉ IP nhà riêng của tôi thay vì địa chỉ IP máy chủ và tôi không thể hiểu tại sao.

Chỉnh sửa: điều này là do khách hàng là địa chỉ nhà của tôi (duh)

21/01/2022 19:10:50 [lỗi] 2383993#2383993: *354409 chỉ mục thư mục của "/home/client/example/public/images/" bị cấm, máy khách: WRONG.IP.ADDRESS.HERE, máy chủ: example.com, yêu cầu: "NHẬN /images/ HTTP1.1", máy chủ lưu trữ: "example.com", liên kết giới thiệu: "https://example.com/images/"

Làm sao tôi có thể giải quyết việc này? Tôi đánh giá cao sự giúp đỡ của bạn.

Chỉnh sửa: đây là đầu ra đầy đủ của nginx -T

# tập tin cấu hình /etc/nginx/nginx.conf:
dữ liệu www của người dùng;
worker_processes tự động;
pid /run/nginx.pid;
bao gồm /etc/nginx/modules-enabled/*.conf;

sự kiện {
    công_nhân kết_nối 768 ;
    # đa_chấp vào ;
}

http {

    ##
    # Cài đặt cơ bản
    ##
    
    gửi tệp trên;
    bật tcp_nopus;
    bật tcp_nodelay;
    keepalive_timeout 65;
    loại_hash_max_size 2048;
    # server_token tắt;

    # server_name_hash_bucket_size 64;
    # máy chủ_tên_trong_chuyển hướng tắt;

    bao gồm /etc/nginx/mime.types;
    ứng dụng default_type/octet-stream;

    ##
    # Cài đặt SSL
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Bỏ SSLv3, tham khảo: POODLE
    bật ssl_prefer_server_ciphers;

    ##
    # Cài đặt ghi nhật ký
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Cài đặt Gzip
    ##

    bật gzip;

    # gzip_vary bật;
    # gzip_proxied bất kỳ;
    # gzip_comp_cấp 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # văn bản gzip_types/văn bản thuần túy/ứng dụng css/ứng dụng json/văn bản javascript/ứng dụng xml/ứng dụng xml/xml+văn bản rss/javascript;

    ##
    # Cấu hình máy chủ ảo
    ##

    bao gồm /etc/nginx/conf.d/*.conf;
    bao gồm /etc/nginx/sites-enabled/*;
    chỉ số index.html;

    # khối máy chủ này có cần thiết không?
    #trang web này đang chạy qua pm2
  người phục vụ {
    server_name example.com www.example.com;

    root /home/client/example/public/;


    nghe 443 ssl; # được quản lý bởi Certbot
    ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; # được quản lý bởi Certbot
    ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; # được quản lý bởi Certbot
    bao gồm /etc/letsencrypt/options-ssl-nginx.conf; # được quản lý bởi Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # được quản lý bởi Certbot

        địa điểm / {
            #root /home/client/example/public/;
            chỉ số index.html;
            tự động lập chỉ mục;
        }
    }
}


#email {
# # Xem tập lệnh xác thực mẫu tại:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "NGƯỜI DÙNG";
# # khả năng của imap "IMAP4rev1" "UIDPLUS";
#
#   người phục vụ {
# nghe máy chủ cục bộ: 110;
# giao thức pop3;
# bật proxy;
# }
#
#   người phục vụ {
# nghe localhost:143;
# hình ảnh giao thức;
# bật proxy;
# }
#}

# tệp cấu hình /etc/nginx/modules-enabled/50-mod-http-image-filter.conf:
mô-đun load_module/ngx_http_image_filter_module.so;

# tệp cấu hình /etc/nginx/modules-enabled/50-mod-http-xslt-filter.conf:
mô-đun load_module/ngx_http_xslt_filter_module.so;

# tệp cấu hình /etc/nginx/modules-enabled/50-mod-mail.conf:
mô-đun load_module/ngx_mail_module.so;

# tệp cấu hình /etc/nginx/modules-enabled/50-mod-stream.conf:
mô-đun load_module/ngx_stream_module.so;

# tập tin cấu hình /etc/nginx/mime.types:

các loại {
    văn bản/html html htm shtml;
    văn bản/css css;
    văn bản/xml xml;
    hình ảnh/gif gif;
    hình ảnh/jpeg jpeg jpg;
    ứng dụng/javascript js;
    ứng dụng/nguyên tử + nguyên tử xml;
    ứng dụng/rss+xml rss;

    văn bản/toán học mml;
    văn bản/txt đơn giản;
    text/vnd.sun.j2me.app-descriptor jad;
    text/vnd.wap.wml wml;
    văn bản/x-thành phần htc;

    hình ảnh/png png;
    hình ảnh/tiff tif tiff;
    image/vnd.wap.wbmp wbmp;
    hình ảnh/biểu tượng x ico;
    hình ảnh/x-jng jng;
    hình ảnh/x-ms-bmp bmp;
    hình ảnh/svg+xml svg svgz;
    hình ảnh/webp webp;

    ứng dụng/phông chữ woff;
    ứng dụng/java-archive jar chiến tai;
    ứng dụng/json json;
    ứng dụng/mac-binhex40 hqx;
    tài liệu ứng dụng/msword;
    ứng dụng/pdf pdf;
    ứng dụng/tái bút ps eps ai;
    ứng dụng/rtf rtf;
    ứng dụng/vnd.apple.mpegurl m3u8;
    ứng dụng/vnd.ms-excel xls;
    ứng dụng/vnd.ms-fontobject eot;
    application/vnd.ms-powerpoint ppt;
    ứng dụng/vnd.wap.wmlc wmlc;
    ứng dụng/vnd.google-earth.kml+xml kml;
    ứng dụng/vnd.google-earth.kmz kmz;
    ứng dụng/x-7z-nén 7z;
    ứng dụng/x-ca cao cco;
    ứng dụng/x-java-archive-diff jardiff;
    ứng dụng/x-java-jnlp-tệp jnlp;
    ứng dụng/x-makeself chạy;
    ứng dụng/x-perl pl pm;
    ứng dụng/x-pilot prc pdb;
    ứng dụng/x-rar-rar nén;
    ứng dụng/x-redhat-gói-quản lý rpm;
    ứng dụng/x-biển biển;
    ứng dụng/x-shockwave-flash swf;
    ứng dụng/x-stuffit ngồi;
    ứng dụng/x-tcl tcl tk;
    ứng dụng/x-x509-ca-cert der pem crt;
    ứng dụng/x-xpinstall xpi;
    ứng dụng/xhtml+xml xhtml;
    ứng dụng/xspf+xml xspf;
    ứng dụng/zip zip;

    ứng dụng/octet-stream bin exe dll;
    gỡ lỗi ứng dụng/octet-stream;
    ứng dụng/octet-stream dmg;
    ứng dụng/octet-stream iso img;
    ứng dụng/octet-stream msi msp msm;

    application/vnd.openxmlformats-officedocument.wordprocessingml.document docx;
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
    application/vnd.openxmlformats-officedocument.presentationml.presentation pptx;

    âm thanh/midi mid midi kar;
    âm thanh/mpeg mp3;
    âm thanh/ogg ogg;
    âm thanh/x-m4a m4a;
    âm thanh/x-realaudio ra;

    video/3gpp 3gpp 3gp;
    video/mp2t ts;
    video/mp4 mp4;
    video/mpeg mpeg mpg;
    video/quicktime mov;
    video/webm webm;
    video/x-flv flv;
    video/x-m4v m4v;
    video/x-mng mng;
    video/x-ms-asf asx asf;
    video/x-ms-wmv wmv;
    video/x-msvideo avi;
}

# tệp cấu hình /etc/nginx/sites-enabled/default:
##
# Bạn nên xem URL sau để hiểu rõ
# tệp cấu hình Nginx để giải phóng hoàn toàn sức mạnh của Nginx.
# https://www.nginx.com/resources/wiki/start/
# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
# https://wiki.debian.org/Nginx/DirectoryStructure
#
# Trong hầu hết các trường hợp, quản trị viên sẽ xóa tệp này khỏi các trang web đã bật/ và
# để nó làm tài liệu tham khảo bên trong các trang web có sẵn, nơi nó sẽ tiếp tục tồn tại
# được cập nhật bởi nhóm đóng gói nginx.
#
# Tệp này sẽ tự động tải các tệp cấu hình do người khác cung cấp
# ứng dụng, chẳng hạn như Drupal hoặc Wordpress. Các ứng dụng này sẽ được thực hiện
# có sẵn bên dưới đường dẫn có tên gói đó, chẳng hạn như /drupal8.
#
# Vui lòng xem /usr/share/doc/nginx-doc/examples/ để biết thêm các ví dụ chi tiết.
##

# Cấu hình máy chủ mặc định
#
người phục vụ {
    nghe 80 default_server;
    lắng nghe [::]:80 default_server;

    # cấu hình SSL
    #
    # nghe 443 ssl default_server;
    # lắng nghe [::]:443 ssl default_server;
    #
    # Lưu ý: Bạn nên tắt gzip cho lưu lượng SSL.
    # Xem: https://bugs.debian.org/773332
    #
    # Đọc ssl_ciphers để đảm bảo cấu hình an toàn.
    # Xem: https://bugs.debian.org/765782
    #
    # Chứng chỉ tự ký được tạo bởi gói ssl-cert
    # Đừng sử dụng chúng trong máy chủ sản xuất!
    #
    # bao gồm đoạn trích/snakeoil.conf;

    gốc/var/www/html;

    # Thêm index.php vào danh sách nếu bạn đang sử dụng PHP
    chỉ mục index.php index.html index.htm index.nginx-debian.html;

    server_name example.com www.example.com ;

    địa điểm / {
        # Lần đầu tiên cố gắng phục vụ yêu cầu dưới dạng tệp, sau đó
        # làm thư mục, sau đó quay lại hiển thị lỗi 404.
        #try_files $uri $uri/ =404;
            proxy_pass http://localhost:3000; #bất kể cổng nào mà ứng dụng của bạn chạy trên đó
            #proxy_connect_timeout 60 giây;
                #proxy_read_timeout 5400 giây;
                #proxy_send_timeout 5400 giây;
                #proxy_set_header máy chủ lưu trữ $host;
                #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                #proxy_set_header X-Real-IP $remote_addr;
                ##proxy_redirect mặc định;
        proxy_http_version 1.1;
            proxy_set_header Nâng cấp $http_upgrade;
            'nâng cấp' kết nối proxy_set_header;
            proxy_set_header Máy chủ lưu trữ $host;
            proxy_cache_bypass $http_upgrade;
    }

    # truyền tập lệnh PHP tới máy chủ FastCGI
    #
    vị trí ~ \.php$ {
        bao gồm đoạn trích/fastcgi-php.conf;

    # # Với php-fpm (hoặc các ổ cắm unix khác):
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    # # Với php-cgi (hoặc các ổ cắm tcp khác):
    # fastcgi_pass 127.0.0.1:9000;
    }
}



# Cấu hình máy chủ ảo ví dụ.com
#
# Bạn có thể di chuyển tệp đó sang một tệp khác trong các trang web có sẵn/ và liên kết tượng trưng đó
# đến các trang web đã bật/ để kích hoạt nó.
#
#người phục vụ {
#nghe80;
# nghe [::]:80;
#
# tên_máy chủ ví dụ.com;
#
# gốc /var/www/example.com;
# chỉ số index.html;
#
#   địa điểm / {
# try_files $uri $uri/ =404;
# }
#}

# tập tin cấu hình /etc/nginx/snippets/fastcgi-php.conf:
# regex để tách $uri thành $fastcgi_script_name và $fastcgi_path
fastcgi_split_path_info ^(.+?\.php)(/.*)$;

# Kiểm tra xem tập lệnh PHP có tồn tại trước khi chuyển nó không
try_files $fastcgi_script_name =404;

# Bỏ qua thực tế là try_files đặt lại $fastcgi_path_info
# xem: http://trac.nginx.org/nginx/ticket/321
đặt $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;

fastcgi_index index.php;
bao gồm fastcgi.conf;

# tập tin cấu hình /etc/nginx/fastcgi.conf:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

# Chỉ PHP, bắt buộc nếu PHP được xây dựng với --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;

# tệp cấu hình /etc/letsencrypt/options-ssl-nginx.conf:
# Tệp này chứa các tham số bảo mật quan trọng. Nếu bạn sửa đổi tập tin này
# theo cách thủ công, Certbot sẽ không thể tự động cung cấp bảo mật trong tương lai
# cập nhật. Thay vào đó, Certbot sẽ in và ghi lại thông báo lỗi với đường dẫn đến
# tệp cập nhật mà bạn sẽ cần tham khảo khi cập nhật thủ công
# tập tin này.

ssl_session_cache được chia sẻ:le_nginx_SSL:10m;
ssl_session_timeout 1440m;
tắt ssl_session_tickets;

ssl_protocols TLSv1.2 TLSv1.3;
tắt ssl_prefer_server_ciphers;

ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA";

# tập tin cấu hình /etc/nginx/fastcgi_params:

fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

# Chỉ PHP, bắt buộc nếu PHP được xây dựng với --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
lá cờ us
Chính xác những gì bạn đang cố gắng yêu cầu? Một hình ảnh riêng lẻ hoặc danh sách thư mục của tất cả các hình ảnh? Nếu bạn muốn nginx hiển thị cho bạn danh sách tất cả các tệp, bạn cần chỉ định danh sách này bằng `autoindex on;`. Và nhật ký có thể có IP nhà của bạn, vì nó ghi lại IP mà yêu cầu đến từ đó. Vì vậy, nếu bạn thực hiện yêu cầu từ nhà của mình, IP nguồn là IP nhà của bạn. Và đó là những gì đang được ghi lại.
lá cờ cn
Tôi đã thêm autoindex vào; nhưng bây giờ nó đang tìm nhầm thư mục cho hình ảnh và đưa ra lỗi 404, trong khi http vẫn hoạt động tốt ...
lá cờ in
Ngoài ra, vui lòng hiển thị khối máy chủ cho http để chúng tôi có thể thấy nơi nó được định cấu hình khác.
lá cờ cn
Đó là tất cả các khối máy chủ trong nginx.conf
lá cờ us
Vui lòng thêm đầu ra của `nginx -T` vào câu hỏi để chúng tôi có thể xem cấu hình nginx đầy đủ.
lá cờ cn
Được rồi tôi đã thêm nó vào câu hỏi. Vì tò mò, tùy chọn -T này được đề cập ở đâu trong tài liệu? Cảm ơn.
Điểm:0
lá cờ cn

Trên bản cài đặt linux mới, tôi thiết lập máy chủ theo cách tương tự, nhưng sử dụng chứng chỉ CertBot mới hơn và cài đặt tự động định cấu hình công cụ Nginx SSL cho tôi. https://certbot.eff.org/instructions

Nó dường như làm việc cho bây giờ. Sẽ cập nhật nếu tôi gặp phải bất kỳ sự cố nào nữa.

Đă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.