Это мой файл конфигурации
server {
listen 80;
server_name localhost;
root /var/www/example/public/;
location / {
try_files $uri $uri/ $uri.html =404;
}
location /api {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Я хочу, чтобы localhost / api перенаправлялся на сервер nodejs, а остальные должны обрабатываться nginx.
Но когда я проверяю access.log
127.0.0.1 - - [21/May/2016:12:06:57 +0530] "GET /api/ HTTP/1.1" 404 9 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
Это означает, что nginx пытается найти api.html, но я хочу, чтобы он был перенаправлен на locahost: 3000
Я проверил онлайн, и многие файлы конфигурации для nginx имели только действует как обратный прокси для узла или обслуживает статический контент с использованием расширений файлов, таких как .jpg, .png и т. д.
Can we not enable ngix to act as reverse proxy and webserver, based on url ?
ИЗМЕНИТЬ 1
Если я отправляю сервер nodejs в / и статические файлы на какой-то другой путь, он отлично работает
пример
server {
listen 80;
server_name localhost;
root /var/www/example/;
location /public {
try_files $uri $uri/ $uri.html =404;
}
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Я могу просматривать сервер nodejs по адресу example.com/ и статические файлы по адресу example.com/public.
Но я не понимаю, почему проблема в этой простой конфигурации (наличие статических файлов в / и сервера api в example.com/api). *