2012-05-10 3 views
3

У меня есть весь мой код в django, поэтому с использованием gunicorn для размещения django и использования nginx в качестве обратного прокси. Теперь я хочу разместить некоторые файлы PHP в том же домене (или поддомене), используя сервер nginx как обратный прокси, и сервер apache.set nginx как прокси-сервер как для apache, так и для gunicorn в то же время

Возможно ли отменить прокси nginx для двух разных серверов? (если убойный автомат не работает, попробуйте apache)

Я могу напрямую разместить php-файлы на apache, но порт 80 берется nginx. Предположим, я хочу разместить php-приложение для блогов - wordpress на blog.XXXX.com, используя apache? и мой регулярный сайт на XXXX.com с помощью Nginx и gunicorn

здесь соответствующая часть моей нынешней nginx.conf

server { 
     listen 80; 
     server_name XXXXX.com; 
     root /home/ubuntu/code/; 

     location/{ 
      proxy_pass_header Server; 
      proxy_set_header Host $http_host; 
      proxy_redirect off; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Scheme $scheme; 
      proxy_connect_timeout 120; 
      proxy_read_timeout 120; 
      proxy_pass http://localhost:8000/; 
     } 
    } 
+0

Я смотрю на аналогичную проблему .. вы найдете решение этого вопроса. – Amistad

ответ

0

Да, это возможно. Однако вам нужно настроить Apache для прослушивания на другом порту.

Не выбирайте зарезервированный порт и убедитесь, что он открыт (и что вы можете получить доступ к нему. Unix имеет диапазон портов, как правило, определенный в /proc/sys/net/ipv4/ip_local_port_range, если вы выбрали ipv4, который вы, вероятно, судя по вашей Nginx конфигурации)

для конфигурации Apache:

Edit вы APACHE главный конфигурационный файл и установить Listen директиву следующим образом:

Listen 127.0.0.1:<port number that's open> // Использование 8080 в качестве порта для начала

Затем создайте VirtualHost следующим образом:

<VirtualHost 127.0.0.1:<port number defined above>> 
    config goes here 
</VirtualHost> 

Вы можете сделать это 2 способами, один из той же области, и один из субдомена.

Для конфигурации Nginx:

Из той же области:

server { 
    listen 80; 
    server_name XXXXX.com; 

#Django app served using Gunicorn 
    location/{ 
     proxy_pass_header Server; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Scheme $scheme; 
     proxy_connect_timeout 120; 
     proxy_read_timeout 120; 
     proxy_pass http://localhost:8000/; 
    } 
#PHP processed by Apache 
    location ~ \.php$ { 
     proxy_pass_header Server; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Scheme $scheme; 
     proxy_connect_timeout 120; 
     proxy_read_timeout 120; 
     proxy_pass http://localhost:<port you configured apache to listen on>/; 
    } 
} 

От подобласти:

#Server block for Django 
server { 
    listen 80; 
    server_name XXXXX.com; 

    location/{ 
     proxy_pass_header Server; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Scheme $scheme; 
     proxy_connect_timeout 120; 
     proxy_read_timeout 120; 
     proxy_pass http://localhost:8000/; 
    } 
} 

#Server block for PHP served using Apache with a subdomain 
server { 
    listen 80; 
    server_name blog.XXXXX.com; 

    location/{ 
     proxy_pass_header Server; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Scheme $scheme; 
     proxy_connect_timeout 120; 
     proxy_read_timeout 120; 
     proxy_pass http://localhost:<port you configured apache to listen on>/; 
    } 
} 

Примечание: Вам не нужнокорневая директива, потому что ваши приложения обслуживаются либо Gunicorn, либо передаются Apache (где вы определяете корень в VirtualHost)

После того как вы отредактировали свои файлы конфигурации, перезапустите Apache и перезапустите Nginx, он должен работать.