LINUX.ORG.RU
ФорумAdmin

NGINX - директория для сайта по дефолту

 , , , ,


0

2

Грустного вечера вам, форумчане (пятница, как ни-как).

Столкнулся с такой проблемой. Создал сайт, который совершенно корректно отрабатывает по запросу к DNS-имени. По IP показывает стандартную страницу nginx. Решил сделать так, чтобы сайт также открывался по IP.
В директории /usr/share/nginx удалил html и на его месте создал симлинк, ведущий в директорию с сайтом. Перезапустил nginx. В результате, по DNS сайт отрабатывает, как раньше, а при обращении по IP - 403 Forbidden.
Директива disable_symlinks off; установлена и находится в ветке [http], перед [server]. Если установить на on, то 404 ошибка.

Права на симлинк:
[root@localhost nginx]# ls -la /usr/share/nginx/
total 8
drwxr-xr-x. 3 nginx nginx 31 Nov 18 19:14 .
drwxr-xr-x. 98 root root 4096 Nov 10 17:38 ..
lrwxrwxrwx 1 nginx nginx 24 Nov 18 19:14 html -> /var/www/tours.msk/html/
drwxr-xr-x. 2 nginx nginx 4096 Nov 10 17:30 modules
Естественно, что по-скольку сайт по DNS-имени отрабатывает корректно, значит там с правами все норм.

В чем может быть причина?
CentOS 7, nginx, php-fpm, mysql, wordpress.

Ответ на: комментарий от melkor217

Добавил в [server] директиву server_name с нужным IP - Заработало. Но при использовании проброса портов до этого адреса из-вне выдает ошибку 404. Как быть?

zerropull ()
Ответ на: комментарий от leave

access.log:

78.106.121.185 - - [18/Nov/2016:19:57:20 +0300] «GET / HTTP/1.1» 404 571 "-" «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36» "-"
78.106.121.185 - - [18/Nov/2016:19:57:20 +0300] «GET /favicon.ico HTTP/1.1» 404 571 "http://78.106.121.185:65000/" «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36» "-"
78.106.121.185 - - [18/Nov/2016:19:57:24 +0300] «GET / HTTP/1.1» 404 571 "-" «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36» "-"
78.106.121.185 - - [18/Nov/2016:19:57:55 +0300] «GET / HTTP/1.1» 404 571 "-" «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36» "-"
78.106.121.185 - - [18/Nov/2016:19:57:56 +0300] «GET / HTTP/1.1» 404 571 "-" «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36» "-"
78.106.121.185 - - [18/Nov/2016:19:58:06 +0300] «GET / HTTP/1.1» 301 5 "-" «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36» "-"
192.168.0.103 - - [18/Nov/2016:20:01:18 +0300] «GET / HTTP/1.1» 404 571 "-" «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36» "-"
192.168.0.103 - - [18/Nov/2016:20:01:28 +0300] «GET / HTTP/1.1» 200 41609 "-" «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36» "-"
192.168.0.103 - - [18/Nov/2016:20:01:29 +0300] «POST /?wc-ajax=get_refreshed_fragments HTTP/1.1» 200 287 "http://192.168.0.102/" «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36» "-"
192.168.0.103 - - [18/Nov/2016:20:07:44 +0300] «GET / HTTP/1.1» 404 571 "-" «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36» "-"

error.log:

2016/11/18 20:06:09 [warn] 3882#0: conflicting server name "http://www.tours.msk" on 0.0.0.0:80, ignored
2016/11/18 20:06:09 [warn] 3882#0: conflicting server name «tours.msk» on 0.0.0.0:80, ignored
2016/11/18 20:06:09 [warn] 3882#0: conflicting server name «192.168.0.102» on 0.0.0.0:80, ignored
2016/11/18 20:06:09 [warn] 3885#0: conflicting server name "http://www.tours.msk" on 0.0.0.0:80, ignored
2016/11/18 20:06:09 [warn] 3885#0: conflicting server name «tours.msk» on 0.0.0.0:80, ignored
2016/11/18 20:06:09 [warn] 3885#0: conflicting server name «192.168.0.102» on 0.0.0.0:80, ignored
2016/11/18 20:07:29 [warn] 3904#0: conflicting server name "http://www.tours.msk" on 0.0.0.0:80, ignored
2016/11/18 20:07:29 [warn] 3904#0: conflicting server name «_» on 0.0.0.0:80, ignored
2016/11/18 20:07:29 [warn] 3907#0: conflicting server name "http://www.tours.msk" on 0.0.0.0:80, ignored
2016/11/18 20:07:29 [warn] 3907#0: conflicting server name «_» on 0.0.0.0:80, ignored
2016/11/18 20:07:44 [error] 3912#0: *2 «/usr/share/nginx/html/index.html» is not found (2: No such file or directory), client: 192.168.0.103, server: _, request: «GET / HTTP/1.1», host: «192.168.0.102»
2016/11/18 20:07:44 [error] 3912#0: *2 open() «/usr/share/nginx/html/404.html» failed (2: No such file or directory), client: 192.168.0.103, server: _, request: «GET / HTTP/1.1», host: «192.168.0.102»

Вот как-то так...

zerropull ()
    listen       80  default_server;
    server_name  _;



и убедись что у тебя только один server {} в конфигах. Ну или у остальных есть server_name и они идут после этого.

/usr/share я бы вообще не трогал, могут возникнуть потом проблемы с postrm / prerm скриптами.

BaBL ★★★★★ ()
Последнее исправление: BaBL (всего исправлений: 1)
Ответ на: комментарий от zerropull

Смотри что у тебя происходит:

у тебя отрабатывает tours.msk конфиг в sites-enabled

потом в nginx.conf после include sites-enabled/* идет дефолтный:

    server {
	client_max_body_size 32m;
        listen       80 default_server;
        listen       [::]:80 default_server;
        root         /usr/share/nginx/html/;

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

        location / {
        }

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

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

который тебе и отдает /usr/share, так как в турс ты по named virtualhost не прошел.

ты можешь или удалить отсюда запись дефолтного и указать мои 2 строчки в конфиге tours.msk, он станет дефолтным или повторить в этом дефолтном свой root и директивы проксирования в php.

BaBL ★★★★★ ()
Последнее исправление: BaBL (всего исправлений: 1)
Ответ на: комментарий от BaBL

nginx.conf теперь выглядит так:

    server {
        client_max_body_size 32m;

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

        location / {
        }

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

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

tours.msk

server {
    listen       80  default_server;
    server_name  _;
}
Видимо я что-то не так сделал, по-скольку выдается ошибка: 403 Forbidden

nginx/1.10.1

zerropull ()
Ответ на: комментарий от BaBL

А также вот такая бубуйня:

[root@localhost nginx]# nginx -t
nginx: [warn] conflicting server name "_" on 0.0.0.0:80, ignored
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost nginx]#

zerropull ()
Ответ на: комментарий от BaBL

C апачем у меня таких проблем не было, но хочется освоить nginx, а также, по-скольку проект планируется довольно высоконагруженным, сразу сделать все по-уму.

zerropull ()
Ответ на: комментарий от BaBL

И кстати, если обращаться к внутреннему IP, то 403 ошибка. Если обращаться на внешний интерфейс, то так: https://goo.gl/s2JN60

Порт проброшен и открыт.
Если сделать telnet на внешний адрес, то получаем это:

 HTTP/1.1 400 Bad Request
Server: nginx/1.10.1
Date: Fri, 18 Nov 2016 18:25:24 GMT
Content-Type: text/html
Content-Length: 173
Connection: close

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/1.10.1</center>
</body>
</html>

zerropull ()
Ответ на: комментарий от zerropull

Я имел ввиду удалить из nginx.conf весь блок server {}, а не 2 строчки.

Я не знаю зачем его туда так засунули, в дебианах делают в sites набор конфигов: 000-default.conf и потом 001-host1.conf 002-host2.conf и т.д.

Так что убери конфиг server {} из файла nginx.conf и должно взлететь.

BaBL ★★★★★ ()
Ответ на: комментарий от BaBL

Нифига ((
Блок [server] из nginx.conf удалил. В tours.msk записал те две строки, которые ты указывал выше - 403 Forbidden. Вернул туда старый конфиг - все работает, как и работало в самом начале, кроме одного нюанса. Теперь при вводе IP меня резолвит на mysite2.name с ошибкой 404.

zerropull ()
Ответ на: комментарий от zerropull

Выкини include /etc/nginx/default.d/*.conf; вообще. Пиши всю конфигурацию для сайта в /etc/nginx/sites-available/sitename. Так и удобней и тебе проще будет разобраться где у тебя повторные строки. Если действительно нужно просто делай несколько server блоков в sitename. И да лучше по ip-адресу ничего вообще не отдавать, особенно если есть планы использовать CDN.

anonymous_sama ★★★★★ ()
Ответ на: комментарий от anonymous_sama

По IP надо отдать для тестирования. Надо с помощью проброса порта дать доступ к сайту из инета, не приобретая домена. Потому и парюсь. А потом все-равно верну, как было.

zerropull ()
Ответ на: комментарий от zerropull

не приобретая домена

Прописываешь в хостс машины с которой тестируешь ип сервера и домен любой.

Потому и зря парюсь.

fixed.

ddidwyll ★★★ ()
Ответ на: комментарий от zerropull

Блок [server] из nginx.conf удалил. В tours.msk записал те две строки, которые ты указывал выше - 403 Forbidden. Вернул туда старый конфиг - все работает, как и работало в самом начале, кроме одного нюанса. Теперь при вводе IP меня резолвит на mysite2.name с ошибкой 404.

вот ты про mysite2 раньше вообще ничего не писал, у тебя сколько вообще вхостов? и что в остальных?

BaBL ★★★★★ ()
Ответ на: комментарий от BaBL

А его раньше и не было. Появился только после всех внесенных правок. vhost`ов - два. Дефолтный, со страницей nginx и tours.msk с сайтом.

zerropull ()
Ответ на: комментарий от ddidwyll

Я ведь написал, что так и сделал. Также написал, что мне надо, чтобы из интернета открывался сайт по IPу, а не по адресу. Так что этот вариант не подходит

zerropull ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.