Это 26-й день моего участия в августовском испытании обновлений.Подробности о событии:Испытание августовского обновления
предисловие
心态好了,就没那么累了。心情好了,所见皆是明媚风景。
“一时解决不了的问题,那就利用这个契机,看清自己的局限性,对自己进行一场拨乱反正。”正如老话所说,一念放下,万般自在。如果你正被烦心事扰乱心神,不妨学会断舍离。断掉胡思乱想,社区垃圾情绪,离开负面能量。心态好了,就没那么累了。心情好了,所见皆是明媚风景。
Nginx прямой прокси
Форвардный прокси: это сервер, расположенный между клиентом и целевым сервером.Чтобы получить контент с целевого сервера, клиент отправляет запрос на прокси и указывает цель (целевой сервер), а затем прокси пересылает запрос на целевой сервер и получит Контент возвращается клиенту. Клиенты должны выполнить некоторые специальные настройки, чтобы использовать прямой прокси. (Например: когда мы посещаем веб-сайт Google, мы не можем получить к нему доступ по другим причинам, но в конечном итоге мы получаем доступ к веб-сайту Google, посещая другие серверы, что в настоящее время является процессом прямого прокси)
Обратный прокси Nginx
Обратный прокси-сервер: в компьютерном мире, поскольку один сервер имеет ограничение в своей способности обрабатывать клиентские (пользовательские) запросы, когда запросы пользователей на доступ переполняются, это приводит к перегрузке сервера, и можно использовать несколько серверов. Для совместного использования тысяч пользовательских запросов эти серверы предоставляют одну и ту же услугу, а для пользователей вообще нет никакой разницы. Фактически он принимает запрос клиента через обратный прокси-сервер, затем распределяет запрос на определенный сервер для обработки, а затем возвращает результат ответа сервера прокси-серверу, который возвращается клиенту прокси-сервером. (Например: при наборе номера службы поддержки 10086 предполагается, что в провинции есть тысячи номеров службы поддержки 10086. На самом деле, нас не волнует наличие нескольких номеров службы поддержки клиентов. Нам важно, чтобы до тех пор, пока так как набирается номер 10086, то есть клиенты службы поддержки, которые могут оказать нам услуги.Все.На самом деле номер коммутатора 10086 это то, что мы называем обратным прокси)
Пример обратного прокси
мы проходим
nginx
для прокси-доступа к проекту. Нам просто нужно изменить файл конфигурацииnginx.conf
Вот и все, конкретные модификации заключаются в следующем: (Не забудьте убрать пробел в середине веса = 3 на скриншоте ниже. Я отформатировал это и сообщу об ошибке, если его не удалить....)
Перезапустите сервер nginx (
nginx -s reload
), затем перейдите по URL-адресу в браузере:http://localhost:8086/chenOne或者chenTwo
Вы можете увидеть эффект (пути в восходящей конфигурации будут доступны отдельно).
Что такое балансировка нагрузки
Когда сервер имеет больше посещений в единицу времени, нагрузка на сервер будет возрастать, а когда она превысит собственные возможности, сервер выйдет из строя. Чтобы избежать сбоев сервера и предоставить пользователям лучший опыт, мы разделяем нагрузку на сервер с помощью балансировки нагрузки.
Мы можем построить много, многие серверы образуют кластер сервера, когда пользователь посещает сайт, чтобы получить доступ к промежуточному серверу, так что выбор между серверами в поменьшее давление на сервере в кластере сервера, запрос доступа, а затем введен в сервер. Поэтому, поскольку каждый пользовательский доступ, убедитесь, что каждый сервер в кластере сервера имеет тенденцию к балансу, чтобы поделиться давлением на сервере, сервере, чтобы избежать аварии. следующее:
# 配置负载均衡的服务器Ip和负载均衡方式(此处为权重轮询)并且允许请求失败次数 max_fails 为3次以及 fail_timeout 请求3次失败后,暂停的时间。
upstream tomcate_server {
server localhost:3010 weight=2 max_fails=3 fail_timeout=10s;
server localhost:3011 weight=2 max_fails=3 fail_timeout=10s;
server localhost:3012 weight=2 max_fails=3 fail_timeout=10s;
# backup 不能和 ip_hash 关键字一起使用
server localhost:3100 max_fails=3 fail_timeout=10s backup;# 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
}
# 配置负载均衡的服务器Ip和负载均衡方式(此处为权重轮询)并且允许请求失败次数 max_fails 为3次以及 fail_timeout 请求3次失败后,暂停的时间。
upstream tomcate_serverTwo {
server localhost:4010 weight=2 max_fails=3 fail_timeout=10s;
server localhost:4011 weight=2 max_fails=3 fail_timeout=10s;
server localhost:4012 weight=2 max_fails=3 fail_timeout=10s;
# backup 不能和 ip_hash 关键字一起使用
server localhost:4100 max_fails=3 fail_timeout=10s backup;# 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
}
отказоустойчивость
При использовании балансировки нагрузки, если сервер в кластере зависнет, будет большой тайм-аут ответа при доступе к серверу.
После сбоя ответа будет доступен обычный сервер в кластере, поэтому взаимодействие с пользователем будет очень плохим, поэтому как решить эту проблему
Что ж, эту проблему на самом деле можно решить, настроив отказоустойчивость на сервере nginx. Открытымnginx/conf
Под содержаниемnginx.conf
файл для редактирования. следующее:
# 超过超时时间则进行故障转移
location /chenOne {
# 放置静态资源的地方
root static;# (d:/nginx/static)
# 访问的首页
index index.html index.htm;
# 进行负载均衡的配置指向地址
proxy_pass http://tomcate_server;
proxy_connect_timeout 3;#默认单位是秒
proxy_read_timeout 3;
proxy_send_timeout 3;
}
# 超过超时时间则进行故障转移
location /chenTwo {
# 放置静态资源的地方
root static;# (d:/nginx/static)
# 访问的首页
index index.html index.htm;
# 进行负载均衡的配置指向地址
proxy_pass http://tomcate_serverTwo;
proxy_connect_timeout 3;#默认单位是秒
proxy_read_timeout 3;
proxy_send_timeout 3;
}
После редактирования сохраните файл и перезапустите
nginx
серверnginx -s reload
. Остановите сервер в кластере и проверьте. Доступ в вашем браузере:http://localhost:8086/
, вы можете видеть, что при доступе к остановленному серверу доступ не удался, и через 3 секунды он автоматически переключится на другой сервер, который работает нормально.
Полная настройка использования прокси: междоменная адресация, балансировка нагрузки и отказоустойчивость (см. примечания к настройке ниже)
- Тот же домен: Простое объяснение — то же доменное имя, номер порта и протокол.
- междоменная проблема: междоменная проблема вызвана ограничениями браузера на политику одного и того же происхождения для javascript, например, js под a.com не может
Вызывайте js, объекты или данные в b.com, потому что a.com и b.com — разные домены, поэтому при вызове возникает междоменная проблема.
- Та же политика происхождения: запрошенный URL-адрес должен находиться в том же домене, что и URL-адрес в браузере, то есть с тем же доменным именем, номером порта и протоколом. Конфигурация выглядит следующим образом:
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# 配置负载均衡的服务器Ip和负载均衡方式(此处为权重轮询)并且允许请求失败次数 max_fails 为3次以及 fail_timeout 请求3次失败后,暂停的时间。
upstream tomcate_server {
server localhost:3010 weight=2 max_fails=3 fail_timeout=10s;
server localhost:3011 weight=2 max_fails=3 fail_timeout=10s;
server localhost:3012 weight=2 max_fails=3 fail_timeout=10s;
# backup 不能和 ip_hash 关键字一起使用
server localhost:3100 max_fails=3 fail_timeout=10s backup;# 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
}
# 配置负载均衡的服务器Ip和负载均衡方式(此处为权重轮询)并且允许请求失败次数 max_fails 为3次以及 fail_timeout 请求3次失败后,暂停的时间。
upstream tomcate_serverTwo {
server localhost:4010 weight=2 max_fails=3 fail_timeout=10s;
server localhost:4011 weight=2 max_fails=3 fail_timeout=10s;
server localhost:4012 weight=2 max_fails=3 fail_timeout=10s;
# backup 不能和 ip_hash 关键字一起使用
server localhost:4100 max_fails=3 fail_timeout=10s backup;# 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
}
server {
listen 8086;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
# 超过超时时间则进行故障转移
location /chenOne {
# 放置静态资源的地方
root static;# (d:/nginx/static)
# 访问的首页
index index.html index.htm;
# 进行负载均衡的配置指向地址
proxy_pass http://tomcate_server;
}
# 超过超时时间则进行故障转移
location /chenTwo {
# 放置静态资源的地方
root static;# (d:/nginx/static)
# 访问的首页
index index.html index.htm;
# 进行负载均衡的配置指向地址
proxy_pass http://tomcate_serverTwo;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
такhttp://tomcate_server
иhttp://tomcate_serverTwo
Все данные на обоих серверах
все появилосьhttp://loaclhost:8086
сервер, который решает проблему кроссдоменности.
🎉summary:
-
Дополнительные справочные сообщения в блоге см. здесь:"Блог Чен Юнцзя"
-
Друзья, которым нравятся блогеры, могут подписаться, поставить лайк и продолжать обновлять, хе-хе!