2016-05-03 3 views
0

У меня есть два Node.js приложений: один мой сайт и второй является CI инструмент. У меня есть следующие Nginx конфигурации:Nginx прокси для Node.js ошибки приложения: Не удалось загрузить ресурс

server { 
    listen 80; 

    server_name example.com; 

    location/{ 
     proxy_pass http://127.0.0.1:8081/; 
    } 

    location /ci { 
     rewrite ^/ci(.*) /$1 break; 
     proxy_pass http://127.0.0.1:3000/; 
    } 
} 

Когда я открыть example.com в браузере загружает все ресурсы, запрошенные index.html правильно, но когда я открываю example.com/ci он загружает только index.html и я получили ошибки, подобные этим:

GET http://example.com/styles/styles.css  404 
GET http://example.com/scripts/app.js  404 

Я добавил <base href="/ci"> в голову index.html в моем CI приложения, но это не помогает.

ответ

0

Я закончил с следующей Nginx конфигурации:

server { 
    listen 80; 

    server_name example.com; 

    location/{ 
     if ($http_referer ~* example.com/ci) { 
      rewrite (.*) http://example.com/ci$1; 
     } 

     access_log off; 

     proxy_pass http://127.0.0.1:8081/; 
     proxy_set_header Host $host; 
     proxy_buffering off; 

     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
    } 

    location = /ci { rewrite^/ci/ last; } 
    location /ci/ { 
     access_log off; 

     proxy_pass http://127.0.0.1:3000/; 
     proxy_set_header Host $host; 
     proxy_buffering off; 

     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
    } 
} 

Также на клиентской стороне моего CI приложения я указанный домен и порт для подключения Socket.io: io.connect('http://example.com:3000'). Нет <base> html необходимые метки.

+0

С помощью этой конфигурации всех запросов POST от http://example.com/ci будут повернуты к GET и я не могу понять, как это исправить. –

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