«Получен HTTP-код 400 от прокси-сервера после ПОДКЛЮЧЕНИЯ», попытка поставить mitmproxy за nginx

У меня есть mitmproxy, работающий на порту 2011. Я могу использовать его сам по себе, с помощьюcurl -x http://127.0.0.1:2011 google.com. Однако теперь я хочу разместить его за nginx под доменным именем.proxy.history.test. Однако, делаяcurl -x http://proxy.history.test:80 google.com -L -vтерпит неудачу с

      * Received HTTP code 400 from proxy after CONNECT
* CONNECT phase completed!
* Closing connection 1
curl: (56) Received HTTP code 400 from proxy after CONNECT

Мойnginx.conf:

      worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        /dev/null;

daemon off;

events {
    worker_connections  1024;
}


http {

    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }

    map $http_host $service_port {
        hostnames;
        default '';


        proxy.history.* 2011;
        }

    proxy_temp_path ./tmp;
    access_log /dev/null;
    ssl_certificate ./cert.pem;
    ssl_certificate_key ./key.pem;
    #proxy_set_header Host localhost;
    client_body_temp_path ./tmp;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    client_max_body_size 50m;


    server {
            listen       127.0.0.1:443 ssl;
    
            server_name  *.test;
    
            location / {

                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
                proxy_set_header X-NginX-Proxy true;
                
                proxy_pass http://127.0.0.1:$service_port;

            }
        }



        server {
                    listen       127.0.0.1:80;
                    
                    server_name  *.test;
                    

                    return 302 https://$http_host$request_uri;

                }

    

        
}

(нужно указать:80в команде curl, потому что в противном случае он попытается подключиться к порту1080, почему-то).

1 ответ

является обратным прокси-сервером, а не прямым прокси-сервером, и не поддерживаетHTTPметод. Вам нужно будет найти стороннююnginxмодуль для поддержкиCONNECT.

Другие вопросы по тегам