Прямой трафик nginx к не доменному имени с использованием IP и локальных имен - PullRequest
1 голос
/ 30 октября 2019

Использование nginx на сервере Windows. Я хочу направлять трафик в разные порты, используя имена, которые не являются доменными, первое работает, а второе никогда не достигает: почему? что случилось? http://192.xxx.xxx.xxx/game: работает http://192.xxx.xxx.xxx/cms: никогда не достигнет. Если я меняю имена, то cms работает, и игра никогда не достигает.

server {
    listen       80;
    server_name  game;
    location /{
        proxy_pass http://localhost:4040;
        proxy_connect_timeout 60s;
        proxy_read_timeout 5400s;
        proxy_send_timeout 5400s;
        proxy_set_header host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_redirect default;
    }
location /uploads/ {
        root c:\Ebrahimi\www\appGame;
}
}

server {
    listen       80;
    server_name  cms;
    location /{
        proxy_pass http://localhost:2010;
        proxy_connect_timeout 60s;
        proxy_read_timeout 5400s;
        proxy_send_timeout 5400s;
        proxy_set_header host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_redirect default;
    }
location /uploads/ {
        root c:\Ebrahimi\www\appCms;
}
}

Новый блок кода, как упомянул Ричард Смит:

server {
    listen       80;
    location /{
        proxy_pass http://localhost:4040;
        proxy_connect_timeout 60s;
        proxy_read_timeout 5400s;
        proxy_send_timeout 5400s;
        proxy_set_header host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_redirect default;
    }
location /uploads/ {
        root c:\Ebrahimi\www\appGame;
}
location /game {
        proxy_pass http://localhost:4040;
}
location /cms{
        proxy_pass http://localhost:2010;
}
}

1 Ответ

1 голос
/ 30 октября 2019

Второй блок server доступен только с помощью server_name, например: http://app.firouzeh-mfg.ir/

Если вы обращаетесь к своему серверу с помощью его IP-адреса, запрос будет обработан первымserver блок (или блок, помеченный как default_server). Подробнее см. в этом документе .

Ваши два URL http://192.x.x.x/game и http://192.x.x.x/cms (при условии идентичных IP-адресов) обращаются к одному и тому же блоку server и отличаются только на location.

Например:

server {
    location /game {
        proxy_pass http://localhost:4040;
    }
    location /cms{
        proxy_pass http://localhost:2010;
    }
}
...