2013-02-15 4 views
2

Хорошо, я не могу понять, что я проверил форум nginx, и там не так много. Я думал, это будет просто. Я хочу, чтобы определенные субдомены переходили на другой URL-адрес. т.е.nginx subdomain

DNS site.com goes to 192.168.1.1 w/ masking 
DNS www.site.com goes 192.168.1.1 w/ masking 
DNS red.site.com goes 192.168.1.1 w/ masking 
DNS blue.site.com goes to 192.168.1.1 w/ masking 

Я хочу site.com и www.site.com работать в обычном режиме, но я хочу red.site.com пойти в 192.168.1.2:5000 и blue.site.com пойти в 192.168 .1.2: 6000/temp/

и т. Д. И т. Д. Я даже не уверен, что мне все равно, что отображается в адресной строке, я думаю, было бы неплохо, если бы он остался на red.site.com, но это не важно. Я пробовал прокси передать ссылку на URL, я явно делаю что-то неправильно. Возможно ли это?

+0

nginx в каком порту слушает? является ли это доверенным лицом других услуг? – gipi

+0

nginx прослушивает порт 80 – user2076820

+0

Что слушает порт 6000 и 5000? объясните немного больше, что такое настройка. – gipi

ответ

4

Вы пробовали директиву Proxy pass?

С чем-то вроде

server { 
    server_name red.site.com; 

    location/{ 
    proxy_pass http://192.168.1.2:5000; 
    } 
} 
server { 
    server_name blue.site.com; 

    location/{ 
    proxy_pass 192.168.1.2:6000/temp/; 
    } 
} 

должен работать. Посмотрите документацию на вещи, такие как заголовок для пересылки и т. Д.

+0

Когда я пытаюсь пройти прокси-прокси, я просто получаю страницу «Добро пожаловать на nginx» по умолчанию, я не получаю никаких ошибок по поводу конфигурации при ее запуске, хотя почти так, как будто она вообще не интерпретирует ее ... – user2076820

3

Создайте столько виртуальных серверов, сколько вам нужно. Зайдите в /etc/nginx/sites-available и скопируйте сервер default в red ... (или где ваша конфигурация здесь). Затем перейдите к /etc/nginx/sites-enabled и сделать символическую ссылку

ln -s ../sites-available/red 

и сделать то же самое для других серверов (синий ...), а затем перезапустить Nginx или killall -HUP nginx перезагрузить конф.

В основном на виртуальном сервере вы предоставляете любую конфигурацию, специфичную для этого сервера.

Например, для red

server { 
    listen 5000; 
    server_name red.site.com; 
    root /var/www/docs/red; 
    ... 
} 

или для blue (обратите внимание на temp добавил к корень)

server { 
    listen 6000; 
    server_name blue.site.com; 
    root /var/www/docs/somewhere/temp; 
    ... 
} 

Если необходимо указать IP-адрес, а также, сделать

listen 192.168.1.2:5000; 

для red или 6000 для blue.

litterature, который объясняет директивы.

3

Вы должны создать файл, если он не существует:

/etc/nginx/conf.d/servers.conf

и заполнить его с настройками прокси-сервера. Например:

server { 
    listen 80; 
    server_name red.site.com; 
    location/{ 
     proxy_pass http://localhost:8080; 
     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_connect_timeout 150; 
     proxy_send_timeout 100; 
     proxy_read_timeout 100; 
     proxy_buffers 4 32k; 
     client_max_body_size 8m; 
     client_body_buffer_size 128k; 
    } 
} 
Смежные вопросы