Раньше я разобрался с этим, но теперь мне пришлось стереть мой VPS, и, по-видимому, я больше не могу правильно настраивать вещи, так что ...
Я настроил Debian VPS и установил на нем Virtualmin. Я купил тестовый домен для использования с этим VPS и указал его основной DNS-сервер на мой IP-адрес VPS. Я использовал Virtualmin для создания виртуального сервера для корневого домена, скажем, например. org, но всякий раз, когда я открывал URL-адрес, я получал страницу виртуального хоста по умолчанию, я продолжал удалять VH по умолчанию (не ФАКТИЧЕСКИЙ по умолчанию, только тот, который создал Virtualmin), и я все еще указываю на / var / www вместо / home / example / public_html Игнорируя это, я попытался создать поддомен в надежде, что по крайней мере он указывал бы на правильный каталог, но ничего не сработало (я также создал DNS CNAME * .example.org, все указывающие на example.org, это правильно?)
Вот VH-файл, созданный Virtualmin:
<VirtualHost 127.0.0.2:80>
SuexecUserGroup "#1001" "#1001"
ServerName example.org
ServerAlias www.example.org
ServerAlias webmail.example.org
ServerAlias admin.example.org
DocumentRoot /home/example/public_html
ErrorLog /var/log/virtualmin/example.org_error_log
CustomLog /var/log/virtualmin/example.org_access_log combined
ScriptAlias /cgi-bin/ /home/example/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5
<Directory /home/example/public_html>
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
AddType application/x-httpd-php .php
AddHandler fcgid-script .php
AddHandler fcgid-script .php5
FCGIWrapper /home/example/fcgi-bin/php5.fcgi .php
FCGIWrapper /home/example/fcgi-bin/php5.fcgi .php5
</Directory>
<Directory /home/example/cgi-bin>
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
</Directory>
RewriteEngine on
RewriteCond %{HTTP_HOST} =webmail.example.org
RewriteRule ^(.*) https://example.org:20000/ [R]
RewriteCond %{HTTP_HOST} =admin.example.org
RewriteRule ^(.*) https://example.org:10000/ [R]
RemoveHandler .php
RemoveHandler .php5
php_admin_value engine Off
IPCCommTimeout 31
FcgidMaxRequestLen 1073741824
Alias /pipermail /var/lib/mailman/archives/public
RedirectMatch /cgi-bin/mailman/([^/\.]*)(.cgi)?(.*) https://example.org:10000/virtualmin-mailman/unauthenticated/$1.cgi$3
RedirectMatch /mailman/([^/\.]*)(.cgi)?(.*) https://example.org:10000/virtualmin-mailman/unauthenticated/$1.cgi$3
</VirtualHost>
На первый взгляд, конфигурация default-ss.conf используется для любого запроса, но я не могу понять почему, поскольку он начинается с "VirtualHost дефолт: 443 "и я запрашиваю порт 80 по умолчанию
Я обнаружил проблему на случай, если кто-то другой столкнется с аналогичным сценарием:
<VirtualHost 127.0.0.2:80>
Мне пришлось изменить это на фактический IP-адрес сервера, потому что по какой-то причине Virtualmin не получил его самостоятельно во время процесса установки.
Как вы указали в своем ответе, проблема заключалась в том, что вы настраивали виртуальный хост для прослушивания IP 127.0.0.2
, который ваши посетители не использовали (они использовали публичный IP-адрес сервера).
Затем вы изменили его на общедоступный IP-адрес сервера, поэтому теперь он работает, но он перестанет работать в тот день, когда изменится ваш IP-адрес (вы переходите на новый сервер, ваш хост переносится в другую зону в другой сети, вы копируете это в новый сервер и т. д.)
Лучшее решение для виртуального хоста на основе имени - не определять IP-адрес и вместо этого использовать подстановочный знак:
<VirtualHost *:80>