Привет, ребята, я боролся с этим в течение последнего дня, и мне нужна помощь.
По сути, у меня есть два изображения, хранящиеся в моем основном домене и субдомене с 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 и местоположению полностью и просто позволить серверу отправлять обратно соответствующие коды ошибок, когда он обнаруживает ошибки.