Назад | Перейти на главную страницу

Разве мы не можем позволить nginx работать как обратный прокси-сервер и веб-сервер на основе URL-адреса?

Это мой файл конфигурации

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). *