2017-02-20 11 views
0

У меня есть сервер с Nginx спереди и nodejs, которые запускают приложение-приложение, и мое приложение разделено на несколько частей, и я хочу, чтобы каждая часть получила собственный субдомен. Пример:Поддиректория, заданная как поддомен

http://192.168.1.1:9000/part1/ --->http://sub1.example.com/

http://192.168.1.1:9000/part2/ --->http://sub2.example.com/

я сделал что-то вроде этого:

server { 
    listen 80; 
    server_name sub1.example.com; 
    root html; 
    index index.html index.htm; 

    location/{ 
      proxy_pass http://127.0.0.1:9000/part1/; 
    }} 

Сервер работает, когда я использовал этот конфиг, но когда я открыть браузер У меня есть ошибка, которая говорит мне о проблеме со статическим контентом.

Сервер пытается взять статический контент из http://127.0.0.1:9000/part1/

Если взять из http://127.0.0.1:9000/

Спасибо за помощь заранее.

+0

Привет, @doni Вы можете сообщить об ошибке, связанной с проблемой со статическим контентом? –

+0

, чтобы уточнить, что вы хотите обслуживать контент, предоставленный 'http: //127.0.0.1: 9000/part1 /' через 'http: // sub1.example.com'? Потому что вы сказали, что «нужно взять с' http: //192.168.1.1: 9000/'в нижней части вашего вопроса. –

+0

Привет @PeterReid. Да, я хочу. Когда я открываю http://127.0.0.1:9000/part1/, все работает, но когда я открываю http://sub1.example.com, у меня проблема со статическим контентом, таким как изображения, css и т. Д. ... Потому что реагировать на статический контент на http: //127.0.0.1: 9000/static/... но nginx пытается получить контент с http: //127.0.0.1: 9000/part1/static/.... – Doni

ответ

0

на основе информации, то, как так может работать (повторить для обеих подобластей, очевидно)

server { 
    listen 80; 
    server_name sub1.example.com; 
    root /home/usr/react/app/build/static; 
    index index.html index.htm; 


    location/{ 
     try_files $uri $uri/ @nodejs; 
    } 

    location @nodejs { 
     proxy_redirect off; 
     proxy_http_version 1.1; 
     proxy_pass http://127.0.0.1:9000/part1; 
     proxy_set_header Host $host ; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 

Разъяснения

В этом случае мы сначала пытаемся найти статические файлы, если они существуют

try_files $uri $uri/ @nodejs; 

Если подходящих файлов не существует, запрос проксируется на сервер Node.js по пути /part1

proxy_pass http://nodejs/part1; 
+0

Я не могу запустить nginx, когда использовал приведенную выше конфигурацию. Ошибка: «proxy_pass не может иметь URI-часть в местоположении, заданном регулярным выражением». Когда я удаляю/part1 из proxy_pass nginx start. На странице sub1.example.com на главной странице «Добро пожаловать в nginx!». Если я меняю URL-адрес, например, на: sub1.example.com/exp, я получаю ошибку 500. Статические файлы находятся внутри реакции app/home/usr/response/app/build/static. – Doni

+0

Я обновил то, что, как я считаю, должен работать? –

+0

У меня такая же ошибка, как раньше. Также, когда я устанавливаю путь в корне, я получил в консольном браузере 403 Forbidden для файлов css/js. Может быть, это вина реакции ... – Doni