2015-10-12 2 views
1

нужно преобразовать суб домена подкаталога как abc.example.com => example.com/abc, я прочитал Nginx форум и попытался прокси пройти с конфигой следующим образом:NGINX: субдомно в подкаталог без перенаправления

abc.example.com Nginx конфигурационный файл:

location/{ 
    proxy_pass http://example.com/abc; 
    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-Forwarded-Proto $scheme; 
} 

example.com Nginx конфигурационный файл:

upstream example { 
    least_conn; 
    server ip_addr_1:port; 
    server ip_addr_2:port; 
} 
server { 
    listen 80; 
    server_name example.com; 
    return 301 https://example.com$request_uri; 
} 
server { 
    listen 443; 
    server_name example.com 
    root /var/www/test/public_html; 
    index index.html index.htm; 
    ssl on;  
    ssl_certificate /etc/nginx/ssl/example.com.chained.crt; 
    ssl_certificate_key /etc/nginx/ssl/example.key; 

    location/{ 
     proxy_pass http://example; 
     proxy_redirect off; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_set_header X-NginX-Proxy true; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
    } 
} 

конфигурационный файл работает, но он открывает пустую страницу с ошибкой консоли как:

Uncaught SyntaxError: Unexpected token <

Я понимаю, что для звонков как/API и/CSS, то есть быть в сделано следующим образом

example.com/api 
example.com/css 

и не с abc.example.com:

abc.example.com/api 
abc.example.com/css 

Так после того, как я изменил файл конфигурации, как описано выше, я получаю домашнюю страницу example.com, если я попытаюсь открыть abc.example.com, а не получать example.com/abc.

Общая: Нужна помощь, чтобы получить поддоменов сопоставляется с Subpath подкаталог/без чейнинга URL-адрес (перенаправление выключен) и/API и/CSS должен быть вызван в верхней (корневой) домен.

Благодарим вас за то, что вы прочитали весь вопрос с терпением и поможете с проблемой!

P.S. Я изменил конфигурацию следующим образом: paste. Мы можем получить сопоставление с URI, сохраненным как abc.example.com, но не можем избавиться от/abc. Таким образом, появляется URI: abc.example.com/abc, вместо этого нам нужно, чтобы он был просто abc.example.com. Короче говоря, нужна помощь, чтобы избавиться от этого дополнительного /abc от URL-адреса, отображаемого клиенту.

ответ

1

Попробуйте что-то вроде этого:

server { 
    server_name abc.example.com; 
    location/{ 
    proxy_pass http://example/abc/; 
    proxy_set_header Host "example.com"; 
    } 
    location /api { 
    proxy_pass http://example; 
    proxy_set_header Host "example.com"; 
    } 
    location /css { 
    proxy_pass http://example; 
    proxy_set_header Host "example.com"; 
    } 
} 
+0

Однако я должен добавить, что вы, вероятно, хотите, чтобы сервер в/CSS статически от Nginx. – cnst

+0

Спасибо! Я попробовал с указанной вами конфигурацией. Ссылка abc.example.com по-прежнему выводит меня на домашнюю страницу example.com вместо example.com/abc, что мы и передали в ** прокси-проходе **. – manishrw

+0

это должна быть ваша конфигурация вверх по течению, которая вызывает проблемы; вы можете захотеть использовать дополнительный модуль http://nginx.org/r/sub_filter, чтобы все ссылки были изменены. – cnst

Смежные вопросы