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.