Вопрос по организации нескольких сайтов в локальной сети

Интернет
Правила форума
Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Версия ОС вместе с разрядностью. Пример: LM 18.1 x64, LM Sarah x32 2. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 3. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 4. Суть. Желательно с выводом консоли, логами. 5. Скрин. Просьба указывать 1, 2 и 3 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
Xanatos
Сообщения: 7
Зарегистрирован: 31 мар 2017, 08:09
Благодарил (а): 4 раза

Вопрос по организации нескольких сайтов в локальной сети

Сообщение Xanatos » 13 окт 2017, 12:51

Всем привет.

Вопрос не касается mint, потому вот в болталку пришел в гости =)
Задам дико ламерский, наверное, вопрос, но надеюсь на вашу помощь.


Имеем:
Машинка в локальной сети под управлением ubuntu 16.04 LTS
$ uname -a
Linux itsm 4.10.0-37-generic #41~16.04.1-Ubuntu SMP Fri Oct 6 22:42:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
На машинке развернуты mysql-server и связка nginx+apache2
Созданы 4 виртуальных хоста.

Требуется:
При обращении по доменному имени к определенному хосту с другой машины в локальной сети - попасть именно на тот хост, который вызывается.

На текущий момент, открывается только первый по иерархии виртуальный хост вне зависимости от того, по какому имени идет обращение.
Содержимое hosts на локальной машине-клиенте:
192.168.1.52 site1.ru
192.168.1.52 site2.ru
192.168.1.52 site3.ru
192.168.1.52 site4.ru
С сетями я, к сожалению, не очень дружу. Буду очень благодарен, если подскажете возможно ли решить данную задачку без разворачивания локального DNS-сервера.
Если только с DNS - буду благодарен за интересную ссылку в стиле "настройка bind9 для чайников" или что-то подобное =)

p.s.: пока что все, что нагуглил по bind9 в моей голове не особо вяжется с тем, что мне требуется =/
 ! Сообщение из: Dja
Вопрос не касается mint
Зато касается работы в сети и Linux. Перенесено.

Аватара пользователя

Chocobo
Сообщения: 5973
Зарегистрирован: 27 авг 2016, 19:57
Решено: 136
Откуда: НН
Благодарил (а): 424 раза
Поблагодарили: 1550 раз

Вопрос по организации нескольких сайтов в локальной сети

Сообщение Chocobo » 13 окт 2017, 12:55

Xanatos, конфиг виртхостов из nginx приложи тоже.
Он должен на входе разбираться куда прокидывать исходя из приходящей $host

Аватара пользователя

Автор темы
Xanatos
Сообщения: 7
Зарегистрирован: 31 мар 2017, 08:09
Благодарил (а): 4 раза

Вопрос по организации нескольких сайтов в локальной сети

Сообщение Xanatos » 13 окт 2017, 13:04

Chocobo, а вот, кажется, внезапно я и нашел ошибку...
Сейчас подправил конфиги вхостов, проверю и отпишусь дополнительно

Сейчас так выглядит



/etc/nginx/nginx.conf
user www-data;
worker_processes 2;
pid /run/nginx.pid;

events {
worker_connections 768;
# multi_accept on;
}

http {

##
# Basic Settings
##

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

# server_names_hash_bucket_size 64;
# server_name_in_redirect off;

include /etc/nginx/mime.types;
default_type application/octet-stream;

##
# SSL Settings
##

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;

##
# Logging Settings
##

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

##
# Gzip Settings
##

gzip on;
gzip_disable "msie6";

gzip_vary on;
gzip_proxied any;
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/$

##
# Virtual Host Configs
##

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}


#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateW ... ePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}
/etc/nginx/sites-available/site1.ru.conf
server {
listen 80;

root /web/site1.ru/www;
index index.html index.php index.htm;

server_name site1.ru www.site1.ru.com;

location ~* ^(?!/phpmyadmin/).+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rt$
access_log off;
expires 30d;
}


# запрет на доступ к .htaccess
location ~ /\.ht {
deny all;
}


# передача запроса апачу
location / {
proxy_pass http://127.0.0.1:81/; # Порт на котором висит Apache
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}
/etc/nginx/sites-available/site2.ru.conf
server {
listen 80;

root /web/site2.ru/www;
index index.html index.php index.htm;

server_name site2.ru www.site2.ru.com;

location ~* ^(?!/phpmyadmin/).+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rt$
access_log off;
expires 30d;
}


# запрет на доступ к .htaccess
location ~ /\.ht {
deny all;
}


# передача запроса апачу
location / {
proxy_pass http://127.0.0.1:81/; # Порт на котором висит Apache
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}
/etc/nginx/sites-available/site3.ru.conf
server {
listen 80;

root /web/site3.ru/www;
index index.html index.php index.htm;

server_name site3.ru www.site3.ru.com;

location ~* ^(?!/phpmyadmin/).+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rt$
access_log off;
expires 30d;
}


# запрет на доступ к .htaccess
location ~ /\.ht {
deny all;
}


# передача запроса апачу
location / {
proxy_pass http://127.0.0.1:81/; # Порт на котором висит Apache
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}
/etc/nginx/sites-available/site4.ru.conf
server {
listen 80;

root /web/site4.ru/www;
index index.html index.php index.htm;

server_name site4.ru www.site4.ru.com;

location ~* ^(?!/phpmyadmin/).+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rt$
access_log off;
expires 30d;
}


# запрет на доступ к .htaccess
location ~ /\.ht {
deny all;
}


# передача запроса апачу
location / {
proxy_pass http://127.0.0.1:81/; # Порт на котором висит Apache
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}
Последний раз редактировалось пользователем 1 Xanatos; всего редактировалось раз: 13

Аватара пользователя

Автор темы
Xanatos
Сообщения: 7
Зарегистрирован: 31 мар 2017, 08:09
Благодарил (а): 4 раза

Вопрос по организации нескольких сайтов в локальной сети

Сообщение Xanatos » 13 окт 2017, 13:15

Нет, вопрос актуален

Когда скидывал конфиги - заметил, что при копировании забыл изменить server_name для 2-4 хостов
Но нет, проблему это не решило :(

Аватара пользователя

Chocobo
Сообщения: 5973
Зарегистрирован: 27 авг 2016, 19:57
Решено: 136
Откуда: НН
Благодарил (а): 424 раза
Поблагодарили: 1550 раз

Вопрос по организации нескольких сайтов в локальной сети

Сообщение Chocobo » 13 окт 2017, 19:18

Xanatos, вот на уровне nginx сейчас развернул два виртхоста с твоей иерархией.

Код: Выделить всё

test@test $ ls -l /etc/nginx/sites-enabled/
lrwxrwxrwx 1 root root 35 окт 13 21:46 site1.ru -> /etc/nginx/sites-available/site1.ru
lrwxrwxrwx 1 root root 35 окт 13 22:06 site2.ru -> /etc/nginx/sites-available/site2.ru
Снимок экрана от 2017-10-13 22-08-47.png
Откинул лишние локейшны пока, корневой сильно видоизменять не стал

Код: Выделить всё

server {
listen 80;

root /web/site1.ru/www;
index index.html index.php index.htm;

server_name site1.ru www.site1.ru.com;

location ~* ^(?!/phpmyadmin/).+\.(html|jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rt){
access_log off;
expires 30d;
}
}

Код: Выделить всё

server {
listen 80;

root /web/site2.ru/www;
index index.html index.php index.htm;

server_name site2.ru;

location ~* ^(?!/phpmyadmin/).+\.(html|jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rt){
access_log off;
expires 30d;
}
Снимок экрана от 2017-10-13 23-01-24.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя

Автор темы
Xanatos
Сообщения: 7
Зарегистрирован: 31 мар 2017, 08:09
Благодарил (а): 4 раза

Вопрос по организации нескольких сайтов в локальной сети

Сообщение Xanatos » 13 окт 2017, 20:02

Chocobo, магия...
Закомментил в конфигах редиректы на апач - статика стала отдаваться корректно...

Не подскажешь тогда, в чем косяк в этом куске?

Код: Выделить всё

        location / {
                proxy_pass http://127.0.0.1:81/; # Порт на котором висит Apache
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-for $remote_addr;
                proxy_set_header Host $host;
                proxy_connect_timeout 300;
                proxy_send_timeout 300;
                proxy_read_timeout 300;
                proxy_redirect off;
                proxy_set_header Connection close;
                proxy_pass_header Content-Type;
                proxy_pass_header Content-Disposition;
                proxy_pass_header Content-Length;
        }
upd: по идее, первые 5 строк (включая location / { ) должны корректно отрабатывать, судя по гуглу.
Возможно, ошибка в параметрах хедеров?

upd2: ан нет...
Раскоментил, опять та же история, даже статика не раздается корректно

Код: Выделить всё

        location / {
                proxy_pass http://127.0.0.1:81/; # Порт на котором висит Apache
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-for $remote_addr;
                proxy_set_header Host $host;
#                proxy_connect_timeout 300;
#                proxy_send_timeout 300;
#                proxy_read_timeout 300;
#                proxy_redirect off;
#                proxy_set_header Connection close;
#                proxy_pass_header Content-Type;
#                proxy_pass_header Content-Disposition;
#                proxy_pass_header Content-Length;
        }

Аватара пользователя

Chocobo
Сообщения: 5973
Зарегистрирован: 27 авг 2016, 19:57
Решено: 136
Откуда: НН
Благодарил (а): 424 раза
Поблагодарили: 1550 раз

Вопрос по организации нескольких сайтов в локальной сети

Сообщение Chocobo » 13 окт 2017, 20:17

Xanatos, А попробуй поднять его выше чем локейшн статики

https://nginx.ru/ru/docs/http/request_processing.html
nginx вначале ищет среди всех префиксных location’ов, заданных строками, максимально совпадающий. Затем nginx проверяет location’ы, заданные регулярными выражениями, в порядке их следования в конфигурационном файле.

Аватара пользователя

Автор темы
Xanatos
Сообщения: 7
Зарегистрирован: 31 мар 2017, 08:09
Благодарил (а): 4 раза

Вопрос по организации нескольких сайтов в локальной сети

Сообщение Xanatos » 13 окт 2017, 20:35

Chocobo, не помогло
Все-равно отдает только с первого хоста
Причем и статику, и пыхапэ

Аватара пользователя

Chocobo
Сообщения: 5973
Зарегистрирован: 27 авг 2016, 19:57
Решено: 136
Откуда: НН
Благодарил (а): 424 раза
Поблагодарили: 1550 раз

Вопрос по организации нескольких сайтов в локальной сети

Сообщение Chocobo » 13 окт 2017, 20:50

Xanatos, У меня по другому себя ведет)
Добавил этот локейшн с апачем - ничего не обломилось, статику отдает корректно как и раньше)

Аватара пользователя

Автор темы
Xanatos
Сообщения: 7
Зарегистрирован: 31 мар 2017, 08:09
Благодарил (а): 4 раза

Вопрос по организации нескольких сайтов в локальной сети

Сообщение Xanatos » 13 окт 2017, 21:09

Chocobo,
Xanatos писал(а):
13 окт 2017, 20:02
магия...
:dash2:
Попробую завтра (т.е., уже сегодня) еще на свежую голову поковырять
И хабр, и стаковерфлоу, и куча других англоязычных ресурсов тоже говорят, что все должно работать =/
Возможно, у меня аура какая-то... дырявая :-D

Аватара пользователя

Автор темы
Xanatos
Сообщения: 7
Зарегистрирован: 31 мар 2017, 08:09
Благодарил (а): 4 раза

Вопрос по организации нескольких сайтов в локальной сети

Сообщение Xanatos » 14 окт 2017, 11:43

Дабы не оставлять тему "открытой".

Сегодня психанул и снёс нжинкс.
Стал перенастраивать все на апач и заметил, что и тот отказывается правильно раскидывать запросы по хостам.
Снова полез в конфиги (уже апача), заметил строчку вида ServerName www.test.ru
Задумался... а зачем мне для ServerName это самое www?

Перезапуск апача, тест.
Все работает как нужно. Так может я где-то и в конфигах нжинкса напортачил с адресами?

Ставлю обратно нжинкс, срисовываю свои же конфиги с этой темы. Но в конфигах нжинкса вижу, что по структуре есть различия
server_name test.ru www.test.ru;

Ладно, проверим.
Копирую конфиг, настраиваю оставшиеся хосты, ребут апача (на всякий), ребут нжинкса, тест...
Магия... Все работает. Нжинкс отдает статику, если обращение идет к php - редиректит запрос на апач. Profit!

Если честно, не совсем понял, почему вчера в итоге не работало)))

На всякий случай, итоговые конфиги вхостов на апаче и нжинксе (еще требуют допиливания, но для первоначальной настройки все работает)


/etc/apache2/sites-available/test.ru.conf

Код: Выделить всё

<VirtualHost 127.0.0.1:8080>
        ServerName test.ru
        ServerAlias www.test.ru

        DocumentRoot /web/test.ru/www

        <Directory /web/test.ru/www>
#               Option Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>

        LogLevel warn

        ErrorLog /web/test.ru/log/error.log
        CustomLog /web/test.ru/log/access.log combined

        #Include conf-available/serve-cgi-bin.conf

</VirtualHost>

/etc/nginx/sites-available/test.ru.conf

Код: Выделить всё

server {
        listen 80;

        root /web/test.ru/www;
        index index.html index.php;

        server_name test.ru www.test.ru;

        # передача запроса апачу
        location / {
                proxy_pass http://127.0.0.1:8080/; # Порт на котором висит Apache
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-for $remote_addr;
                proxy_set_header Host $host;
                proxy_connect_timeout 300;
                proxy_send_timeout 300;
                proxy_read_timeout 300;
                proxy_redirect off;
                proxy_set_header Connection close;
                proxy_pass_header Content-Type;
                proxy_pass_header Content-Disposition;
                proxy_pass_header Content-Length;
        }

        location ~* ^(?!/phpmyadmin/).+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
                access_log off;
                expires 30d;
        }

        # запрет на доступ к .htaccess
        location ~ /\.ht {
                deny all;
        }
}

Вернуться в «Работа с сетью»