Назад | Перейти на главную страницу

Изображение с определенного домена на моем сервере Nginx нормально загружается в браузере, но 404, когда я скручиваю

Привет, ребята, я боролся с этим в течение последнего дня, и мне нужна помощь.

По сути, у меня есть два изображения, хранящиеся в моем основном домене и субдомене с nginx.

http://orgasmal.com/r.png (SFW)

http://assets.orgasmal.com/e.gif (SFW)

они оба отлично загружаются в браузере, и это хорошо. Единственная проблема в том, что когда я скручиваю основной домен, он возвращает 404.

curl -I http://orgasmal.com/r.png
HTTP/1.1 404 Not Found
Server: nginx/1.6.3
Date: Mon, 29 Aug 2016 18:52:07 GMT
Content-Type: text/html
Content-Length: 168
Connection: keep-alive

Но когда я скручиваю поддомен, он работает так, как ожидалось.

curl -I http://assets.orgasmal.com/e.gif
HTTP/1.1 200 OK
Server: nginx/1.6.3
Date: Mon, 29 Aug 2016 18:53:05 GMT
Content-Type: image/gif
Content-Length: 145
Last-Modified: Mon, 29 Aug 2016 05:34:06 GMT
Connection: keep-alive
ETag: "57c3c94e-91"
Accept-Ranges: bytes

Я перепробовал практически все, чтобы заставить это работать, даже блоки сервера в моем файле .conf такие же, но он по-прежнему дает 404 для основного образа домена. Любая помощь будет оценена.

server {
    listen   80;
    server_name  orgasmal.com;

    # note that these lines are originally from the "location /" block
    root   /var/www/orgasm;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
     error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

server {
    listen   80;
    server_name  assets.orgasmal.com;

    # note that these lines are originally from the "location /" block
    root   /var/www/img;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
     error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

Каталоги такие же

drwxr-xr-x 2 nginx nginx 4096 Jul 18 11:30 cgi-bin
drwxr-xr-x 2 nginx nginx 4096 Jul 18 11:30 html
drwxr-xr-x 2 nginx nginx 4096 Aug 29 14:00 img
drwxr-xr-x 2 nginx nginx 4096 Aug 29 14:00 orgasm

РЕДАКТИРОВАТЬ

Я проверил свои журналы ошибок nginx, и похоже, что это как-то связано с проблемой, с которой я столкнулся. Ожидается ошибка 403, но две указанные выше ошибки кажутся своего рода странным перенаправлением, которое все испортило. Не знаю, как это исправить, но, похоже, это проблема.

2016/08/29 16:23:35 [error] 28032#0: *53 open() "/usr/share/nginx/html/r.png" failed (2: No such file or directory), client: MY IP, server: _, request: "HEAD /r.png HTTP/1.1", host: "orgasmal.com"
2016/08/29 16:24:01 [error] 28032#0: *54 open() "/usr/share/nginx/html/r.png" failed (2: No such file or directory), client: MY IP, server: _, request: "HEAD /r.png HTTP/1.1", host: "orgasmal.com"
2016/08/29 16:24:48 [error] 28032#0: *55 directory index of "/var/www/orgasm/" is forbidden, client: MY IP, server: orgasmal.com, request: "GET / HTTP/1.1", host: "orgasmal.com"

В чем была проблема

Этот серверный блок в /etc/nginx/nginx.conf был как-то испорчен, поэтому я удалил его, и теперь все работает отлично.

 server {
    listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
                root   /usr/share/nginx/html;
        index  index.html index.htm;
         }

        error_page 404 /404.html;
            location = /40x.html {
        }

    error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

От моего клиента

curl -I http://orgasmal.com/r.png
HTTP/1.1 200 OK
Server: nginx/1.6.3
Date: Mon, 29 Aug 2016 21:11:53 GMT
Content-Type: image/png
Content-Length: 224603
Last-Modified: Mon, 29 Aug 2016 17:41:59 GMT
Connection: keep-alive
ETag: "57c473e7-36d5b"
Accept-Ranges: bytes

Подозреваю, что это ваш клиент, поскольку он отлично работает, когда я скручиваюсь с моего сервера AWS.

curl -I  http://orgasmal.com/r.png
HTTP/1.1 200 OK
Server: nginx/1.6.3
Date: Mon, 29 Aug 2016 19:53:45 GMT
Content-Type: image/png
Content-Length: 224603
Last-Modified: Mon, 29 Aug 2016 17:41:59 GMT
Connection: keep-alive
ETag: "57c473e7-36d5b"
Accept-Ranges: bytes

Он также отлично работает с webpagetest - нажмите, чтобы увидеть результат.

Поддомен curl тоже работает нормально. Я не играю, чтобы щелкать ссылку с компьютера, на котором я сейчас.

Обновить после предоставления журналов

Что касается этой конфигурации

error_page 500 502 503 504 /50x.html;
location = /50x.html {
    root /usr/share/nginx/html;
}

Директива error_page гласит: «Если есть ошибка 500, ищите страницу 50x.html». Правило местоположения гласит: «Вместо поиска статической html-страницы ищите запрошенный файл в каталоге / usr / share / nginx / htm». Эта запись в журнале подтверждает, что происходит.

"/usr/share/nginx/html/r.png" failed (2: No such file or directory)

Это довольно странная конфигурация. Я бы удалил его полностью и просто позволил бы директиве error_page и местоположению полностью и просто позволить серверу отправлять обратно соответствующие коды ошибок, когда он обнаруживает ошибки.