2013-08-31 4 views
4

Я пытаюсь настроить прокси для моего сервера Node.js на моем экземпляре EC2, поэтому я могу получить к нему доступ через что-то вроде , где * - это остальная часть URI , Я настроил прокси редактирования /etc/httpd/conf/httpd.conf со следующим:Node.js прокси через Apache на Amazon EC2

<Proxy *> 
    Order deny,allow 
    Allow from all 
</Proxy> 
ProxyPass /node http://*.amazonaws.com:3000 
ProxyPassReverse /node http://*.amazonaws.com:3000 

Моего Node.js server.js файла выглядит следующим образом:

var port = process.env.PORT || 3000; 
var host = '*.amazonaws.com' || process.env.HOST || '127.0.0.1'; 

Так что, когда у меня есть все, и работают , Я могу получить доступ к /node, однако каталог Node.js /public не используется в качестве корневого каталога документа, поэтому я получаю 404s для любого файла. index.html включает в себя bec Предположим, что он находится в каталоге /public. Например, Firebug сообщает о 404 для http://*.amazonaws.com/javascripts/rails.js и еще 3 файлах, что означает, что это не попадает в каталог /public Node.js.

Приятно отметить, что если я редактирую пути в файле index.html, все работает, но я не хочу этого делать ... также, если я выберу конфигурацию ProxyPass в httpd.conf и просто обращайтесь к серверу узлов с http://*.amazonaws.com:3000, он работает ... но в идеале я бы не хотел этого делать и мог бы сделать /node.

Что я хочу знать, правильно ли настроен мой прокси, а если нет, то как мне его исправить, поэтому, когда я обращаюсь к /node, все запрошенные файлы перенаправляются сами?

+0

Какова структура вашего узла? Является ли файл index.html общедоступным? Не могли бы вы разместить свой код узла (или, по крайней мере, основной файл, обычно app.js, если вы используете экспресс, например) –

+1

Тот факт, что запросы не попадают в общедоступную (статические файлы), не обязательно из-за плохого прокси-конфигурации. Каков порядок вашего промежуточного ПО или где вы положили 'app.use (express.static (__ dirname + '/ public'));'? – Michael

+0

Как объясняется в моем другом комментарии, я использую CompoundJS в качестве основы для лесов/MVC. Он использует Express, но он в основном абстрагирует все это от меня. Я сделаю кое-какие операции и вернусь к вам. – incutonez

ответ

1

Я согласен с комментаторами в том, что это возможно, если вы используете экспресс-статическое промежуточное ПО, которое может быть неправильно сконфигурировано.

В случае, однако, что вы хотите Apache для обработки статических запросов независимо, это синтаксис конфигурации Apache для создания исключения PROXYPASS:

ProxyPass /javascript/ ! 

Вы также должны убедиться, что у вас есть DocumentRoot, но это должно проходить через любые запросы к каталогу javascript в обычный apache, который будет обрабатывать запросы к этому каталогу любым способом, который вы настроили.

+0

Хм, хорошо. Я использую CompoundJS, который использует Express. Я должен буду изучить это, когда у меня появится шанс. – incutonez

+0

Я решил это аналогично в nginx ... он применил вместо [root] использование ['alias'] (http://wiki.nginx.org/HttpCoreModule#alias). – incutonez

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