Jestem tak zagubiony i nowy w samodzielnym budowaniu NGINX, ale chcę mieć możliwość włączania bezpiecznych gniazd internetowych bez dodatkowej warstwy.
Nie chcę włączać SSL na samym serwerze WebSocket, ale zamiast tego chcę użyć NGINX, aby dodać warstwę SSL do całości.
Każda strona internetowa mówi, że nie mogę tego zrobić, ale wiem, że mogę! Dzięki temu, kto (ja) może mi pokazać jak!
proxy_read_timeout
działa, zredagowałem odpowiedź.location
Dyrektywa jest umieszczona wserver
innejlocation
dyrektywie (zobacz dokumentację lokalizacji ).backend_host
jestupstream
(zobacz dokumentację źródłową ) - jednym lub grupą serwerów, do których będziesz proxy.Nie bój się, ponieważ odważna grupa programistów operacji rozwiązała sytuację dzięki nowemu nginx_tcp_proxy_module
Napisany w sierpniu 2012 roku, więc jeśli jesteś z przyszłości, powinieneś odrobić lekcje.
Wymagania wstępne
Zakłada, że używasz CentOS:
init.d/nginx
skryptu)yum install pcre pcre-devel openssl openssl-devel
i wszelkie inne niezbędne biblioteki do budowania NGINXZbuduj swój nowy NGINX
Ponownie zakłada CentOS:
cd /usr/local/
wget 'http://nginx.org/download/nginx-1.2.1.tar.gz'
tar -xzvf nginx-1.2.1.tar.gz
cd nginx-1.2.1/
patch -p1 < /path/to/nginx_tcp_proxy_module/tcp.patch
./configure --add-module=/path/to/nginx_tcp_proxy_module --with-http_ssl_module
(możesz dodać więcej modułów, jeśli ich potrzebujesz)make
make install
Opcjonalny:
sudo /sbin/chkconfig nginx on
Skonfiguruj Nginx
Pamiętaj, aby najpierw skopiować stare pliki konfiguracyjne, jeśli chcesz ich ponownie użyć.
Ważne: będziesz musiał stworzyć
tcp {}
dyrektywę na najwyższym poziomie w swoim conf. Upewnij się, że nie znajduje się on w Twojejhttp {}
dyrektywie.Poniższa przykładowa konfiguracja przedstawia pojedynczy nadrzędny serwer sieci Web i dwa serwery proxy zarówno dla SSL, jak i bez SSL.
źródło
To zadziałało dla mnie:
- zapożyczone z: https://github.com/nicokaiser/nginx-websocket-proxy/blob/df67cd92f71bfcb513b343beaa89cb33ab09fb05/simple-wss.conf
źródło
# WebSocket support
odcięty zrobił to dla mnie. Wcześniej próbowałem przekierować port 400, jednak wss działa na 443. Przyszli czytelnicy do Twojej wiadomości :)dla .net core 2.0 Nginx z SSL
To zadziałało dla mnie
źródło
Dla mnie sprowadzało się to do
proxy_pass
ustawienia lokalizacji. Musiałem przejść na protokół HTTPS i mieć ważny certyfikat SSL ustawiony po stronie serwera węzłowego. W ten sposób, kiedy wprowadzam zewnętrzny serwer węzłów, muszę tylko zmienić adres IP, a wszystko inne pozostaje bez zmian.Mam nadzieję, że to pomoże komuś po drodze ... Cały czas gapiłem się na problem ... westchnij ...
źródło
localtion /horizon
, ale to nie działa. Tylkolocaltion /
lublocation /websockify
działa. Nie wiem dlaczego ...Dobry, zwięzły artykuł autorstwa Pankaja Malhotry omawia, jak to zrobić z NGINX i jest dostępny tutaj .
Podstawową konfigurację NGINX przedstawiono poniżej:
źródło
Korzystanie z nginx / 1.14.0
Mam serwer WebSocket działający na porcie 8097 i użytkownicy łączą się z wss na porcie 8098, nginx po prostu odszyfrowuje zawartość i przekazuje ją do serwera WebSocket
Więc mam ten plik konfiguracyjny (w moim przypadku
/etc/nginx/conf.d/default.conf
)źródło