LINUX.ORG.RU
ФорумAdmin

Доступ к виртуальному хосту apache без домена

 


0

1

У сервера, где стоит Apache нет доменного имени. Как сделать, чтобы обращения к виртуальным хостам без домена работали?

/etc/httpd/conf/httpd.conf:

ServerRoot "/etc/httpd"
Listen 127.0.0.1:80
Listen 192.168.0.208:80
User apache
Group apache
AddDefaultCharset UTF-8
EnableSendfile on


<Directory />
    AllowOverride none
    Require all denied
</Directory>
<Directory "/var/www">
    Require all granted
</Directory>


ServerAdmin admin@localhost
DocumentRoot "/var/www/zaglushka"
ErrorLog "/var/www/zaglushka/error_log"
LogLevel warn
<Directory "/var/www/zaglushka">
    Options All
</Directory>

Include conf.modules.d/*.conf
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    <IfModule logio_module>
       LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" combined
</IfModule>
<IfModule mime_module>
    TypesConfig /etc/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>
<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>


IncludeOptional conf.d/*.conf

/etc/httpd/conf.d/mediawiki.conf:

<VirtualHost *:*>
   ServerName mediawiki
   ServerAdmin admin@localhost
   DocumentRoot "/var/www/mediawiki"
   ErrorLog "/var/www/mediawiki/error_log"
   <Directory "/var/www/mediawiki">
      Options All
   </Directory>
</VirtualHost>

Нужно, чтобы виртуальный хост mediawiki был доступен по url http://192.168.0.208/~mediawiki, или http://192.168.0.208/mediawiki, где-то видел такое.

★★★★★

Последнее исправление: sunny1983 (всего исправлений: 1)

Нужно, чтобы виртуальный хост mediawiki был доступен
или http://192.168.0.208/mediawiki, где-то видел такое.

https://httpd.apache.org/docs/current/mod/mod_alias.html

http://192.168.0.208/~mediawiki

как вариант, если это реально пользователь и еще будут юзеры https://httpd.apache.org/docs/2.4/mod/mod_userdir.html

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

Не очень понимаю. Директивы mod_alias нужны, чтобы подменять одни пути другими. Как тут они могут помочь и где именно их использовать? Да, и забыл сказать, без имени виртуального хоста, должна выводиться страница-заглушка.

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

Вот конфиг

Listen 81

<VirtualHost *:81>

    Alias /mediawiki /srv/www/1/mediawiki

    DocumentRoot /srv/www/1

    <Directory />
	Options FollowSymLinks
	AllowOverride All
    </Directory>

    <Directory /srv/www/1>
        Options Indexes FollowSymLinks
        AllowOverride All
	Order allow,deny
	allow from all
    </Directory>
</VirtualHost>


Далее заходим в http://127.0.0.1:81/mediawiki/ и видим нашу страницу

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

А почему в вашем конфиге нет дириктивы ServerName?
И зачем Listen 81? Почему все хосты не могут на 80 порту работать? Говорю же, я такое где-то видел.

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

Это был пример. По аналогии сделай себе нужный порт. А ServerName в примере нет, так как ты сам сказал, что у тебя нет доменного имени для этого хоста. Но опять же никто не мешает тебе вписать любой удобный тебе ServerName.

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

Мне нужно, чтобы все виртуальные хосты были на одном (умолчальный 80) порту, но при этом у сервера нет домена.

А ServerName в примере нет, так как ты сам сказал, что у тебя нет доменного имени для этого хоста.

Веб-сервер с доменными именами не работает, он работает с именами хостов, которые присутствуют в GET-запросах. Apache должен по имени хоста понимать какому виртуалхосту запрос адресовывать. А безымянный виртуалхост получается запросов никогда не получит. По логике задача модуля, обнаруживать в запросах url, начинающиеся с /mediawiki и изменять заголовок запроса, меняя имя хоста на mediawiki.

Да, и я попробовал следовать примеру. Создал два виртуалхоста: mediawiki и dokuwiki, прописал в <VirtualHost></VirtualHost> директивы ServerName и Alias, в результате:
http://192.168.0.208/ - загружается dokuwiki
http://192.168.0.208/mediawiki - ошибка 404
http://192.168.0.208/dokuwiki - загружается dokuwiki

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

Здесь не нужны виртуальные хосты.

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

Ты путаешь виртхосты и поддиректории.

Виртхост - это когда у тебя есть

http://dokuwiki.example.com/

http://mediawiki.example.com/

http://dokuwiki2.example.com/

В твоём случае это всё один виртхост, в котором на разные пути отдаются разные поддиректории. Решение для этого выше тебе уже подсказали.

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

Короче, я так и поступил. Удалил все виртуальные хосты, движки разместил в поддиректориях сервера.
В локалке всё работает, но вот я на роутере пробрасываю 80 порт наружу и пытаюсь подключиться из интернета.
Страницы не грузятся, никакая ошибка не выдаётся, просто «попытка соединения не удалась», но лог acsess_log говорит что запросы успешно доходили:

77.*.*.232 - - [18/May/2016:20:54:33 +0300] "GET /mediawiki/ HTTP/1.1" 301 - "-" "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
В чём может быть дело?

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