Por que o proxy Apache pode passar isso quando o nginx não pode?

1

Eu tenho um host SSL no meu servidor apache com o seguinte no VirtualHost:

    <VirtualHost 217.147.92.100:443>
    ServerName server.com

    ServerAdmin [email protected]
    DocumentRoot /somepath/

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    SSLEngine on

    SSLCertificateFile  /etc/something/fullchain.pem
    SSLCertificateKeyFile /etc/something/privkey.pem

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
            SSLOptions +StdEnvVars
    </Directory>

    BrowserMatch "MSIE [2-6]" \
            nokeepalive ssl-unclean-shutdown \
            downgrade-1.0 force-response-1.0
    # MSIE 7 and newer should be able to use keepalive
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

    SSLProxyEngine on
    ProxyPass "/rtapi/" "ws://localhost:38120/"
    ProxyPassReverse "/rtapi/" "ws://localhost:38120/"

    <Directory /somepath/>
        AllowOverride all
        Require all granted
    </Directory>
</VirtualHost>

Bom até agora? Observe o proxypass para a pasta / rtapi /. O bom e velho apache tem um charme, como sempre.

Agora, para o nosso infeliz campista nginx, de quem peço muito menos:

server {
listen 45108 ssl;

ssl on;
ssl_certificate /etc/something/fullchain.pem;
ssl_certificate_key /etc/something/privkey.pem;

location / {
    proxy_pass http://localhost:38120;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

}

Tudo o que eu estou procurando do nginx é colocar um wrapper SSL no meu serviço websocket e enviá-lo por proxy.

Eu recebo:

2017/08/24 19:55:01 [error] 25018#0: *2 connect() failed (111: Connection refused) while connecting to upstream, client: 71.192.225.239, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:38120/", host: "api.speedracing.tv:45108"

O que parece ser útil. Oh! Meu pequeno servidor websocket não deve estar respondendo ... mas espere um segundo. Certamente, o servidor deve estar em execução porque aceita as solicitações com proxy do apache. Claramente, a conclusão lógica é que nginx é a conexão, mas eu não estou realmente vendo o porquê ou como.

    
por Joshua Pech 25.08.2017 / 03:58

0 respostas