VirtualHosts не работает (Mod_proxy, Proxmox) - PullRequest
0 голосов
/ 10 января 2012

Для начала я использую Proxmox для виртуализации нескольких машин.Теперь я хочу, чтобы моя основная машина перенаправляла трафик в соответствии с именем сервера.У меня была однажды работающая настройка, но теперь как-то она не сработает.

мой хост по умолчанию:

00_proxmox_domain_com.conf

NameVirtualHost *:80
<VirtualHost *:80>
ServerName proxmox.domain.com
ServerName *.proxmox.domain.com
#RewriteLog "/root/rewrite.log"
#RewriteLogLevel 10
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
RewriteCond %{REQUEST_URI} !^/nrd/
RewriteCond %{REQUEST_URI} !^/images/
RewriteCond %{REQUEST_URI} !^/css/
RewriteCond %{REQUEST_URI} !^/javascript/
RewriteCond %{REQUEST_URI} !^/vncterm/
RewriteCond %{REQUEST_URI} !^/.*\.js$
RewriteCond %{REQUEST_URI} !^/login.pl$
RewriteCond %{HTTP_HOST} ^proxmox\.domain\.com$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [L,R]
</VirtualHost>

Затем у меня есть несколько похожих виртуальных хостов (в настоящее время активирован только этот). Это должно отправить посетителя в PHPMyAdmin на виртуальном сервере с IP-адресом 192.168.1.13

02_pma_domain_com.conf

<VirtualHost *:80>
ServerName pma.domain.com
ServerName *.pma.domain.com

ProxyRequests Off

ProxyPreserveHost On

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass / http://192.168.1.13/
ProxyPassReverse / http://192.168.1.13/
</VirtualHost>

И есть виртуальный хост-файл Proxmox

pve.conf

<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 1 
MaxSpareServers 2
MaxClients          50
MaxRequestsPerChild 30
</IfModule>

  ServerName localhost
  ServerSignature Off
  ServerTokens Prod
  ServerAdmin root
  AddDefaultCharset On

  # Hint: Ajax use KeepAlive, which in effect disables MaxRequestsPerChild,
  # so we need to disable KeepAlive to prevent exhaustive memory usage, or
  # at least make sure that periodic updaters interval > KeepAliveTimeout 
  KeepAlive Off

  DocumentRoot /usr/share/pve-manager/root
  <Directory />
Options FollowSymLinks
AllowOverride None
  </Directory>

  <Directory /usr/share/pve-manager/root>
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
  </Directory>

  ErrorLog /var/log/apache2/error.log

  LogLevel warn

  # do not log access to our ajax services
  SetEnvIf Request_URI "^/ws/" dontlog

  CustomLog /var/log/apache2/access.log combined env=!dontlog 

  Alias /images/  /usr/share/pve-manager/images/
  Alias /css/ /usr/share/pve-manager/css/
  Alias /javascript/ /usr/share/javascript/
  Alias /vncterm/ /usr/share/vncterm/

  # avoid authentication when accessing favicon
  Alias /favicon.ico /usr/share/pve-manager/images/favicon.ico

  PerlModule Embperl
  EMBPERL_SESSION_ARGS "config=DB_File Lock=Semaphore"

  AddType text/html .epl

  PerlRequire /usr/share/pve-manager/root/startup.pl

  PerlSetVar PVESatisfy any     
  PerlSetVar PVEPath /  
  PerlSetVar PVELoginScript /login.pl

  PerlTransHandler PVE::URLRewrite

  Alias /nrd/ /__no_real_dir__/

  <Directory "/usr/share/pve-manager/root">
  AuthType PVE::AuthCookieHandler
  AuthName PVE
  PerlSetVar PVECookieName PVEAuthCookie
  #PerlSetVar AuthCookieDebug 5

  PerlAuthenHandler PVE::AuthCookieHandler->authenticate
  PerlAuthzHandler PVE::AuthCookieHandler->authorize

  require group root

  DirectoryIndex index.htm index.pl

  <FilesMatch ".*\.htm$">
EMBPERL_APPNAME PVE
    EMBPERL_SYNTAX EmbperlBlocks
    EMBPERL_OBJECT_BASE base.epl
EMBPERL_INPUT_ESCMODE 0
EMBPERL_ESCMODE 0
    SetHandler  perl-script
    PerlHandler Embperl::Object
    Options     ExecCGI
  </FilesMatch>
  <FilesMatch ".*\.epl$">
    Order allow,deny
    Deny From all
  </FilesMatch>
  <FilesMatch ".*\.pl$">
    SetHandler perl-script
PerlHandler ModPerl::Registry
    Options +ExecCGI
  </FilesMatch>

</Directory>

<Location /nrd/LOGIN>
  AuthType PVE::AuthCookieHandler
  AuthName PVE
  PerlSetVar PVECookieName PVEAuthCookie
  #PerlSetVar AuthCookieDebug 5
  SetHandler perl-script
  PerlHandler PVE::AuthCookieHandler->login
</Location>

<Location /ws/>
  SetHandler perl-script
  PerlHandler $PVE::HTMLServices::Obj->handler
</Location>

<VirtualHost *:443>
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile /etc/pve/pve-ssl.pem
SSLCertificateKeyFile /etc/pve/pve-ssl.key

RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]

</VirtualHost>

Если вы видите явную ошибку, пожалуйста, сообщите мне.

Если у вас есть работающая установка proxmox, было бы полезно, если бы вы могли дать мне свой pve.conf. И если у вас есть виртуальные хосты, работающие с одним из этих файлов, будет очень кстати.

Я пробовалнесколько вещей, чтобы решить проблему, без какого-либо эффекта.

1 Ответ

0 голосов
/ 11 января 2012

Нашел, благодаря: Apache 2.2 игнорирует VirtualDocumentRoot VirtualHosts?

Должен быть только один ServerName, и он не может содержать подстановочные знаки, вы должны использовать ServerAlias ​​вместо этого;)

...