2013-12-03 5 views
0

Я использую Plesk 11, который имеет Nginx сидя перед Apache прослушивает порт 80 и 443 и используя proxy_pass для перенаправления запросов в Apache прослушивает порты 7080 и 7081.Nginx один домен на несколько IP-адресов

I обновлять записи DNS от 1.2.3.4 до 6.7.8.9 и хотели бы, чтобы сайт работал на обоих IP-адресах во время переключения.

Как мне разрешить это?

Это то, что я пытался, но он не работает (Plesk служил вверх по умолчанию «этот домен еще не настроен» страницы):

# Nginx 
server { 
    # listen 6.7.8.9:80; 
    listen 80; 
    server_name example.com; 
    server_name www.example.com; 

    client_max_body_size 128m; 

    root "/var/www/vhosts/example.com/httpdocs"; 
    access_log /var/www/vhosts/system/example.com/logs/proxy_access_log; 

    location/{ 
     proxy_pass http://6.7.8.9:7080; 
     proxy_set_header Host    $host; 
     proxy_set_header X-Real-IP  $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Accel-Internal /internal-nginx-static-location; 
     access_log off; 
    } 

    location /internal-nginx-static-location/ { 
     alias /var/www/vhosts/example.com/httpdocs/; 
     add_header X-Powered-By PleskLin; 
     internal; 
    } 
} 


# Apache - setup to listen on new IP address 
<VirtualHost 6.7.8.9:7080 > 
    ServerName "example.com:80" 
    ServerAlias "www.example.com" 
    UseCanonicalName Off 

    <IfModule mod_suexec.c> 
     SuexecUserGroup "example" "psacln" 
    </IfModule> 

    ServerAdmin "[email protected]" 

    DocumentRoot "/var/www/vhosts/example.com/httpdocs" 
    CustomLog /var/www/vhosts/system/example.com/logs/access_log plesklog 
    ErrorLog "/var/www/vhosts/system/example.com/logs/error_log" 

    <IfModule mod_ssl.c> 
     SSLEngine off 
    </IfModule> 

    SetEnv PP_CUSTOM_PHP_INI /var/www/vhosts/system/example.com/etc/php.ini 
    SetEnv PP_CUSTOM_PHP_CGI_INDEX module 

    <IfModule mod_fcgid.c> 
     FcgidInitialEnv PP_CUSTOM_PHP_INI /var/www/vhosts/system/example.com/etc/php.ini 
     FcgidInitialEnv PP_CUSTOM_PHP_CGI_INDEX module 
     FcgidMaxRequestLen 134217728 
    </IfModule> 

    <Directory /var/www/vhosts/example.com/httpdocs> 

     <IfModule sapi_apache2.c> 
     php_admin_flag engine on 

     # General settings 
     php_admin_flag safe_mode off 
     php_admin_value open_basedir "/var/www/vhosts/example.com/:/tmp/" 
     # Performance settings 
     # Additional directives 
     </IfModule> 

     <IfModule mod_php5.c> 
     php_admin_flag engine on 

     # General settings 
     php_admin_flag safe_mode off 
     php_admin_value open_basedir "/var/www/vhosts/example.com/:/tmp/" 
     # Performance settings 
     # Additional directives 
     </IfModule> 

     Options -Includes -ExecCGI 
    </Directory> 

ответ

0

Вы можете это сделал с помощью добавления уродливой хак в виртуальных шаблонах хоста:

Прежде всего создать пользовательский шаблон:

mkdir -p /usr/local/psa/admin/conf/templates/custom/domain/ 

cp /usr/local/psa/admin/conf/templates/default/domain/nginxDomainVirtualHost.php /usr/local/psa/admin/conf/templates/custom/domain/nginxDomainVirtualHost.php 
cp /usr/local/psa/admin/conf/templates/default/domain/domainVirtualHost.php /usr/local/psa/admin/conf/templates/custom/domain/domainVirtualHost.php 

Чем сделать следующие изменения, я сделал это только для SSL части:

Изменение в domainVirtualHost.php:

<VirtualHost <?php echo $OPT['ipAddress']->escapedAddress ?>:<?php echo $OPT['ssl'] ? $VAR->server->webserver->httpsPort : $VAR->server->webserver->httpPort ?> <?php echo ($VAR->server->webserver->proxyActive && $OPT['ipAddress']->isIpV6()) ? "127.0.0.1:" . ($OPT['ssl'] ? $VAR->server->webserver->httpsPort : $VAR->server->webserver->httpPort) : '' ; ?> <?php echo ($VAR->domain->asciiName == 'special.tld') ? ' 1.2.3.4:' . $VAR->server->webserver->httpsPort : '' ?>> 

Добавить в nginxDomainVirtualHost.php:

<?php if ($VAR->domain->asciiName == 'special.tld'): ?> 
    listen 1.2.3.4:443 ssl; 
<?php endif ?> 

После/USR/местные/psa/admin/bin/httpdmng --reconfigure-domain special.tld

вы получаете следующие конфигурации (или ошибки в панели, которые некоторые vhosts не могут перенастроить):

head /var/www/vhosts/system/special.tld/conf/last_httpd.conf 

#ATTENTION! 
# 
#DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY, 
#SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED. 
#IF YOU REQUIRE TO APPLY CUSTOM MODIFICATIONS, PERFORM THEM IN THE FOLLOWING FILES: 
#/var/www/vhosts/system/special.tld/conf/vhost.conf 
#/var/www/vhosts/system/special.tld/conf/vhost_ssl.conf 
<IfModule mod_ssl.c> 

<VirtualHost 6.7.8.9:7081 1.2.3.4:7081> 


head /var/www/vhosts/system/special.tld/conf/last_nginx.conf 

#ATTENTION! 
# 
#DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY, 
#SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED. 



server { 
    listen 6.7.8.9:443 ssl; 
    listen 1.2.3.4:443 ssl; 
Смежные вопросы