Puncte:0

nginx nu va difuza imagini peste https (403 interzis)

drapel cn

Sunt nedumerit de această problemă de câteva luni. Site-ul meu se încarcă bine în http, dar când folosește https, doar imaginile nu se încarcă. Văd această eroare în consolă.

Nu s-a încărcat resursa: serverul a răspuns cu starea 403 (Interzis) /images/:1

Configurația serverului meu arată așa.

utilizator www-date;
worker_proceses auto;
pid /run/nginx.pid;
includ /etc/nginx/modules-enabled/*.conf;

evenimente {
    conexiuni_muncitor 768;
}

http {
    ##
    # Setări de bază
    ##

    sendfile activat;
    tcp_nopush activat;
    tcp_nodelay activat;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    #server_tokens off;

    includ /etc/nginx/mime.types;
    aplicație de tip_default/octet-stream;

    ##
    # Setări SSL
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Eliminarea SSLv3, ref: POODLE
    ssl_prefer_server_ciphers activat;

    ##
    # Setări de înregistrare
    ##

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

    ##
    # Setări Gzip
    ##

    gzip on;

    ##
    # Configurații gazdă virtuală
    ##

    includ /etc/nginx/conf.d/*.conf;
    includ /etc/nginx/sites-enables/*;
    index index.html;

    Server {
        nume_server example.com www.example.com;

        root /home/client/example/public/;

        #gestionat de Certbot
        asculta 443 ssl;
        ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
        includ /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

        Locație / {
            index index.html;
        }
    }
}

În error.log, clientul are adresa mea IP de acasă în loc de adresa IP a serverului și nu îmi pot da seama de ce.

Edit: acest lucru se datorează faptului că clientul este adresa mea de acasă (nu)

2022/01/21 19:10:50 [eroare] 2383993#2383993: *354409 indexul directorului „/home/client/example/public/images/” este interzis, client: WRONG.IP.ADDRESS.HERE, server: example.com, cerere: „GET /images/ HTTP1.1”, gazdă: „example.com”, referitor: „https://example.com/images/”

Cum pot rezolva asta? Apreciez ajutorul vostru.

Editare: aici este rezultatul complet al lui nginx -T

# fișier de configurare /etc/nginx/nginx.conf:
utilizator www-date;
worker_proceses auto;
pid /run/nginx.pid;
includ /etc/nginx/modules-enabled/*.conf;

evenimente {
    conexiuni_muncitor 768;
    # multi_accept on;
}

http {

    ##
    # Setări de bază
    ##
    
    sendfile activat;
    tcp_nopush activat;
    tcp_nodelay activat;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    includ /etc/nginx/mime.types;
    aplicație de tip_default/octet-stream;

    ##
    # Setări SSL
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Eliminarea SSLv3, ref: POODLE
    ssl_prefer_server_ciphers activat;

    ##
    # Setări de înregistrare
    ##

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

    ##
    # Setări Gzip
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied orice;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Configurații gazdă virtuală
    ##

    includ /etc/nginx/conf.d/*.conf;
    includ /etc/nginx/sites-enabled/*;
    index index.html;

    #este necesar acest bloc de server?
    #acest site web rulează până la pm2
  Server {
    nume_server example.com www.example.com;

    root /home/client/example/public/;


    asculta 443 ssl; # gestionat de Certbot
    ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; # gestionat de Certbot
    ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; # gestionat de Certbot
    includ /etc/letsencrypt/options-ssl-nginx.conf; # gestionat de Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # gestionat de Certbot

        Locație / {
            #root /home/client/example/public/;
            index index.html;
            autoindex activat;
        }
    }
}


#Poștă {
# # Vezi exemplu de script de autentificare la:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities „TOP” „USER”;
# # imap_capabilities „IMAP4rev1” „UIDPLUS”;
#
#   Server {
# asculta localhost:110;
# protocol pop3;
# proxy activat;
#}
#
#   Server {
# asculta localhost:143;
# protocol imap;
# proxy activat;
#}
#}

# fișier de configurare /etc/nginx/modules-enabled/50-mod-http-image-filter.conf:
load_module modules/ngx_http_image_filter_module.so;

# fișier de configurare /etc/nginx/modules-enabled/50-mod-http-xslt-filter.conf:
load_module modules/ngx_http_xslt_filter_module.so;

# fișier de configurare /etc/nginx/modules-enabled/50-mod-mail.conf:
load_module modules/ngx_mail_module.so;

# fișier de configurare /etc/nginx/modules-enabled/50-mod-stream.conf:
load_module modules/ngx_stream_module.so;

# fișier de configurare /etc/nginx/mime.types:

tipuri {
    text/html html htm shtml;
    text/css css;
    text/xml xml;
    imagine/gif gif;
    imagine/jpeg jpeg jpg;
    aplicație/javascript js;
    aplicație/atom+xml atom;
    aplicație/rss+xml rss;

    text/mathml mml;
    text/txt simplu;
    text/vnd.sun.j2me.app-descriptor jad;
    text/vnd.wap.wml wml;
    text/x-component htc;

    imagine/png png;
    imagine/tiff tif tiff;
    imagine/vnd.wap.wbmp wbmp;
    imagine/x-icoană ico;
    imagine/x-jng jng;
    imagine/x-ms-bmp bmp;
    imagine/svg+xml svg svgz;
    imagine/webp webp;

    aplicație/font-woff woff;
    aplicație/java-arhivă jar war ear;
    aplicație/json json;
    aplicație/mac-binhex40 hqx;
    aplicație/msword doc;
    cerere/pdf pdf;
    aplicație/postscript ps eps ai;
    aplicație/rtf rtf;
    application/vnd.apple.mpegurl m3u8;
    application/vnd.ms-excel xls;
    application/vnd.ms-fontobject eot;
    application/vnd.ms-powerpoint ppt;
    application/vnd.wap.wmlc wmlc;
    application/vnd.google-earth.kml+xml kml;
    application/vnd.google-earth.kmz kmz;
    aplicație/x-7z-comprimat 7z;
    aplicare/x-cacao cco;
    application/x-java-archive-diff jardiff;
    aplicație/x-java-jnlp-fișier jnlp;
    aplicație/x-makeself rulează;
    application/x-perl pl pm;
    application/x-pilot prc pdb;
    application/x-rar-compressed rar;
    application/x-redhat-package-manager rpm;
    aplicare/x-mare mare;
    aplicație/x-shockwave-flash swf;
    application/x-stuffit sit;
    aplicație/x-tcl tcl tk;
    application/x-x509-ca-cert der pem crt;
    aplicație/x-xpinstall xpi;
    aplicație/xhtml+xml xhtml;
    aplicație/xspf+xml xspf;
    aplicare/zip zip;

    aplicație/octet-stream bin exe dll;
    application/octet-stream deb;
    application/octet-stream dmg;
    application/octet-stream iso img;
    aplicație/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;

    audio/midi mid midi kar;
    audio/mpeg mp3;
    audio/ogg ogg;
    audio/x-m4a m4a;
    audio/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;
}

# fișier de configurare /etc/nginx/sites-enabled/default:
##
# Ar trebui să vă uitați la următoarele adrese URL pentru a înțelege o înțelegere solidă
# de fișiere de configurare Nginx pentru a elibera pe deplin puterea lui 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
#
# În majoritatea cazurilor, administratorii vor elimina acest fișier de pe site-uri activate/ și
# lăsați-l ca referință în interiorul site-urilor-disponibil acolo unde va continua să fie
# actualizat de echipa de ambalare nginx.
#
# Acest fișier va încărca automat fișierele de configurare furnizate de alții
# aplicații, cum ar fi Drupal sau Wordpress. Aceste cereri se vor face
# disponibil sub o cale cu acel nume de pachet, cum ar fi /drupal8.
#
# Consultați /usr/share/doc/nginx-doc/examples/ pentru exemple mai detaliate.
##

# Configurația implicită a serverului
#
Server {
    asculta 80 default_server;
    asculta [::]:80 default_server;

    # Configurare SSL
    #
    # asculta 443 ssl default_server;
    # asculta [::]:443 ssl default_server;
    #
    # Notă: ar trebui să dezactivați gzip pentru traficul SSL.
    # Vezi: https://bugs.debian.org/773332
    #
    # Citiți informații despre ssl_ciphers pentru a asigura o configurație sigură.
    # Vezi: https://bugs.debian.org/765782
    #
    # Certificate autosemnate generate de pachetul ssl-cert
    # Nu le folosiți pe un server de producție!
    #
    # include snippets/snakeoil.conf;

    rădăcină /var/www/html;

    # Adăugați index.php la listă dacă utilizați PHP
    index index.php index.html index.htm index.nginx-debian.html;

    server_name example.com www.example.com ;

    Locație / {
        # Mai întâi încercați să serviți cererea ca fișier, apoi
        # ca director, apoi reveniți la afișarea unui 404.
        #try_files $uri $uri/ =404;
            proxy_pass http://localhost:3000; #indiferent de portul pe care rulează aplicația ta
            #proxy_connect_timeout 60s;
                #proxy_read_timeout 5400s;
                #proxy_send_timeout 5400s;
                #proxy_set_header gazdă $gazdă;
                #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                #proxy_set_header X-Real-IP $remote_addr;
                ##proxy_redirect implicit;
        proxy_http_versiunea 1.1;
            proxy_set_header Actualizare $http_upgrade;
            proxy_set_header Conexiune „upgrade”;
            proxy_set_header Gazdă $gazdă;
            proxy_cache_bypass $http_upgrade;
    }

    # treceți scripturile PHP către serverul FastCGI
    #
    locație ~ \.php$ {
        include snippets/fastcgi-php.conf;

    # # Cu php-fpm (sau alte socket-uri Unix):
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    # # Cu php-cgi (sau alte socket-uri tcp):
    # fastcgi_pass 127.0.0.1:9000;
    }
}



# Configurarea gazdei virtuale pentru example.com
#
# Puteți muta asta într-un fișier diferit sub site-available/ și puteți trimite simbolul
# la site-uri activate/ pentru a-l activa.
#
#Server {
# asculta 80;
# asculta [::]:80;
#
# server_name example.com;
#
# root /var/www/example.com;
# index index.html;
#
#   Locație / {
# try_files $uri $uri/ =404;
#}
#}

# fișier de configurare /etc/nginx/snippets/fastcgi-php.conf:
# regex pentru a împărți $uri în $fastcgi_script_name și $fastcgi_path
fastcgi_split_path_info ^(.+?\.php)(/.*)$;

# Verificați dacă scriptul PHP există înainte de a-l transmite
try_files $fastcgi_script_name =404;

# Ocoliți faptul că try_files resetează $fastcgi_path_info
# vezi: http://trac.nginx.org/nginx/ticket/321
setați $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;

fastcgi_index index.php;
include fastcgi.conf;

# fișier de configurare /etc/nginx/fastcgi.conf:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $șir_interogare;
fastcgi_param REQUEST_METHOD $cerere_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 $schemă;
fastcgi_param HTTPS $https dacă_nu_vide;

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

fastcgi_param REMOTE_ADDR $adresă_la distanță;
fastcgi_param REMOTE_PORT $port_la distanță;
fastcgi_param SERVER_ADDR $adresa_server;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

# Numai PHP, necesar dacă PHP a fost construit cu --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;

# fișier de configurare /etc/letsencrypt/options-ssl-nginx.conf:
# Acest fișier conține parametri importanți de securitate. Dacă modificați acest fișier
# manual, Certbot nu va putea oferi automat securitate viitoare
# actualizări. În schimb, Certbot va imprima și va înregistra un mesaj de eroare cu o cale către
# fișierul actualizat la care va trebui să vă referiți atunci când actualizați manual
# acest fișier.

ssl_session_cache shared:le_nginx_SSL:10m;
ssl_session_timeout 1440m;
ssl_session_tickets off;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers dezactivat;

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

# fișier de configurare /etc/nginx/fastcgi_params:

fastcgi_param QUERY_STRING $șir_interogare;
fastcgi_param REQUEST_METHOD $cerere_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 $schemă;
fastcgi_param HTTPS $https dacă_nu_vide;

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

fastcgi_param REMOTE_ADDR $adresă_la distanță;
fastcgi_param REMOTE_PORT $port_la distanță;
fastcgi_param SERVER_ADDR $adresa_server;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

# Numai PHP, necesar dacă PHP a fost construit cu --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
drapel us
Ce mai exact încerci să ceri? O singură imagine sau o listă de director cu toate imaginile? Dacă doriți ca nginx să vă arate o listă cu toate fișierele, trebuie să specificați acest lucru prin `autoindex on;`. Și jurnalul ar putea avea IP-ul tău de acasă, deoarece înregistrează IP-ul de la care a venit cererea. Deci, dacă faceți cererea de acasă, IP-ul sursă este IP-ul de acasă. Și asta se înregistrează.
drapel cn
Am adăugat autoindex pe; dar acum caută imagini în folderul greșit și dă un 404, în timp ce http încă funcționează bine...
drapel in
Vă rugăm să afișați și blocul serverului pentru http, astfel încât să putem vedea unde este configurat diferit.
drapel cn
Acestea sunt toate blocurile de server din nginx.conf
drapel us
Vă rugăm să adăugați rezultatul `nginx -T` la întrebare, astfel încât să putem vedea configurația completă a nginx.
drapel cn
Bine, l-am adăugat la întrebare. Doar din curiozitate, unde este această opțiune -T menționată în documente? Mulțumiri.
Puncte:0
drapel cn

La o nouă instalare a linux, am configurat serverul în același mod, dar folosind un certificat CertBot mai recent și o instalare care a configurat automat chestiile Nginx SSL pentru mine. https://certbot.eff.org/instructions

Se pare că funcționează deocamdată. Voi actualiza dacă mai întâmpin probleme.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.