Nginx перенаправляет запросы без имени сервера на другой порт - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть сервер, который принимает запросы от разных доменов и IP-адресов.Я хочу убедиться, что все запросы, которые попадают на порт 80 через мое доменное имя (например, example.com и www.example.com), перенаправляют на порт https.Однако любые запросы домена кроме от указанного в блоке 80 сервера должны открывать порт 8080 (например, соединения через ip addresses или random.subdomain.example.com).

Я попробовал следующую конфигурацию,Однако все запросы перенаправляются на https (даже от тех, которые не указаны в server_name в блоке 80 серверов - то есть example.com переходит на https://example.com, но http://server_ip_address переходит на https://server_ip_address вместо доступа к порту 8080)

# HTTP - redirect all requests to HTTPS:
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

upstream test_server {
    server 127.0.0.1:8080;
}

server {
    listen 80;
    location / {
        proxy_pass                          http://test_server;
        proxy_http_version                  1.1;
        proxy_set_header  Upgrade           $http_upgrade;
        proxy_set_header  Connection        "upgrade";
        proxy_set_header  Host              $host;
        proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header  X-Real-IP         $remote_addr;
        client_max_body_size                1m;
    }
}

... https block continues ...
...