написать впереди
В современном Интернете Nginx является одним из наиболее часто используемых прокси-серверов.Многие крупные предприятия используют Nginx в качестве прокси-сервера в своих бизнес-системах. Поэтому нам необходимо понимать различные конфигурации Nginx для Http, Https, WS и WSS. Приходите и приходите, изучайте Nginx с Glacier, продвигайтесь вместе и лысейте вместе~~
Nginx настроить HTTP
Во-первых, давайте поговорим о том, как Nginx настраивает Http.Конфигурация Nginx Http — одна из наиболее часто используемых функций Nginx. Настройте соответствующую информацию в nginx.conf, как показано ниже.
upstream message {
server localhost:8080 max_fails=3;
}
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
#允许cros跨域访问
add_header 'Access-Control-Allow-Origin' '*';
#proxy_redirect default;
#跟代理服务器连接的超时时间,必须留意这个time out时间不能超过75秒,当一台服务器当掉时,过10秒转发到另外一台服务器。
proxy_connect_timeout 10;
}
location /message {
proxy_pass http://message;
proxy_set_header Host $host:$server_port;
}
}
В этот момент посетитеhttp://localhost/message, будут отправленыhttp://localhost:8080/messageначальство.
Nginx настроить HTTPS
Если бизнес предъявляет высокие требования к безопасности веб-сайта, Https может быть настроен в Nginx в это время Конкретная информация о конфигурации может быть сделана следующим образом.
upstream message {
server localhost:8080 max_fails=3;
}
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /usr/local/nginx-1.17.8/conf/keys/binghe.pem;
ssl_certificate_key /usr/local/nginx-1.17.8/conf/keys/binghe.key;
ssl_session_timeout 20m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_verify_client off;
location / {
root html;
index index.html index.htm;
#允许cros跨域访问
add_header 'Access-Control-Allow-Origin' '*';
#跟代理服务器连接的超时时间,必须留意这个time out时间不能超过75秒,当一台服务器当掉时,过10秒转发到另外一台服务器。
proxy_connect_timeout 10;
}
location /message {
proxy_pass http://message;
proxy_set_header Host $host:$server_port;
}
}
посетить в это времяhttps://localhost/messageбудет отправленоhttp://localhost:8080/messageначальство.
Nginx настроить WS
Полное название WS — WebSocket, а настроить WebSocket в Nginx относительно просто, нужно только настроить его в файле nginx.conf. Этот метод очень прост, но очень эффективен и может горизонтально расширить сервисные возможности сервера WebSocket.
Чтобы облегчить лучшее понимание мелких партнеров, здесь я сосредоточусь на конфигурации Nginx WS.
Сначала отобразите файл конфигурации напрямую, как показано ниже (скопируйте его напрямую, если вы его используете, а затем измените ip и порт)
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream wsbackend{
server ip1:port1;
server ip2:port2;
keepalive 1000;
}
server {
listen 20038;
location /{
proxy_http_version 1.1;
proxy_pass http://wsbackend;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 3600s;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
Далее мы отдельно разберем конкретное значение приведенной выше конфигурации.
первый:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
означает:
- если
$http_upgrade 不为 '' (空),$ Connection_uppgrade для обновления. - если
$http_upgrade 为 '' (空),Тогда $connection_upgrade закрывается.
Следующий:
upstream wsbackend{
server ip1:port1;
server ip2:port2;
keepalive 1000;
}
Представляет балансировку нагрузки nginx:
- Два сервера (ip1:port1) и (ip2:port2).
- keepalive 1000 представляет собой простаивающие соединения, поддерживаемые вышестоящим сервером в каждом процессе nginx.Когда простаивающих соединений слишком много, наименее используемые простаивающие соединения будут закрыты.Конечно, это не ограничивает общее количество соединений.Можно себе представить в качестве размера пула незанятых соединений установите значение, которое должно быть приемлемым для вышестоящего сервера.
наконец:
server {
listen 20038;
location /{
proxy_http_version 1.1;
proxy_pass http://wsbackend;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 3600s;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
Указывает конфигурацию прослушивающего сервера
- listen 20038 указывает порт, который прослушивает nginx
- местоположения / Указывает путь прослушивания (/ указывает все пути, универсальное соответствие, эквивалентное умолчанию)
- proxt_http_version 1.1 указывает, что версия протокола HTTP, отправляемая обратным прокси-сервером, равна 1.1, а HTTP1.1 поддерживает длинные соединения.
- proxy_pass http://wsbackend; Представляет uri обратного прокси, где можно использовать переменные балансировки нагрузки
- proxy_redirect off; означает не заменять путь, по сути, неважно, если он есть / здесь, потому что по умолчанию также заменяется путь к задней части proxy_pass
- proxy_set_header Host
$host; Указывает, что заголовок запроса остается неизменным при передаче, $host — это встроенная переменная nginx, представляющая текущий заголовок запроса, а proxy_set_header — установленный заголовок запроса. - proxy_set_header X-Real-IP $remote_addr; Указывает, что IP-адрес источника по-прежнему является текущим IP-адресом клиента при передаче
- proxy_read_timeout 3600s; Соединение закрывается после того, как интервал между двумя запросами таблицы превышает 3600s.По умолчанию 60s, что является виновником автоматического закрытия.
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; Указывает, что заголовок X-Forwarded-For не изменяется
- proxy_set_header Upgrade $http_upgrade; Указывает, что обновление установлено без изменений
- proxy_set_header Connection
$connection_upgrade;Указывает, что если $http_upgrade является обновлением, запрос является обновлением (веб-сокет), если нет, закройте соединение.
В этот момент посетитеws://localhost:20038будет отправленоip1:port1а такжеip2:port2начальство.
Nginx настроить WSS
WSS расшифровывается как WebSocket + Https. С точки зрения непрофессионала, это безопасный WebSocket. Далее давайте посмотрим, как настроить WSS. При настройке WS подробно описываются детали настройки, и я не буду их здесь подробно вводить.
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream wsbackend{
server ip1:port1;
server ip2:port2;
keepalive 1000;
}
server{
listen 20038 ssl;
server_name localhost;
ssl_certificate /usr/local/nginx-1.17.8/conf/keys/binghe.com.pem;
ssl_certificate_key /usr/local/nginx-1.17.8/conf/keys/binghe.com.key;
ssl_session_timeout 20m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_verify_client off;
location /{
proxy_http_version 1.1;
proxy_pass http://wsbackend;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 3600s;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
В этот момент посетитеwss://localhost:20038будет отправленоip1:port1а такжеip2:port2начальство.
Малые партнеры вы узнаете это? Добро пожаловать в конец сообщения таким образом.
Хорошо, давайте остановимся здесь сегодня, я Glacier, если у вас есть какие-либо вопросы, вы можете оставить сообщение ниже или добавить меня в WeChat: sun_shine_lyz, я втяну вас в группу, вместе обменяемся технологиями, вместе продвинемся и быть классными вместе~~