Общее использование location, upstream, rewrite и proxy_pass в Nginx.

Nginx

1. местоположение: как следует из названия --> адрес, также называемый маршрутизацией.

Сервер nginx является очень базовой конфигурацией.Когда персонал по эксплуатации и обслуживанию nginx изменяет конфигурацию nginx, большинство из них также вращается вокруг конфигурации местоположения.

Давайте взглянем на простую конфигурацию местоположения:

location / {
     root   home/;
     index  index.html;
}

Эта конфигурация означает, что любой путь доступа к серверу nginx будет переходить на страницу index.html в домашнем каталоге.

Давайте подробно поговорим о правилах сопоставления пути к местоположению.Существует 3 метода сопоставления для сопоставления местоположения.

1. Абсолютное совпадение, в точности равное знаку "=", например:

##当访问地址端口后面的地址等于/login/demo.html时,就会直接走这个location地址。
location = /login/demo.html {
       *******
}

2. Обычное совпадение ~ или ~* . Первый чувствителен к регистру, второй не чувствителен к регистру.

location ^~ /images/ {
# 匹配任何已/images/开头的任何查询并且停止搜索。任何正则表达式将不会被测试。
}
 
location ~* .(gif|jpg|jpeg)$ {
# 匹配任何已.gif、.jpg 或 .jpeg 结尾的请求
}
 

3. Общее совпадение без знака. Даже если совпадение без знака совпадет, оно не сломается и будет продолжать совпадать вниз. Если будет найдено обычное или полное совпадение, оно будет использовано напрямую.

в заключении:= точное совпадение. Если этот запрос совпадает, поиск останавливается, и запрос немедленно обрабатывается. ~ для совпадения с учетом регистра (доступны регулярные выражения) !~ несоответствие с учетом регистра ~* — это совпадение без учета регистра (доступно регулярное выражение) !~* — регистронезависимое несоответствие ^~ Если этот префикс используется для обычной строки, он указывает nginx не проверять регулярное выражение, если путь совпадает.


2. proxy_pass обратный прокси

1: Когда мы сталкиваемся с междоменными проблемами, и клиент не может поддерживать CORS, лучший способ — позволить серверу действовать как прокси. Откройте маршрут в конфигурации nginx сервера, на котором расположена фронтенд-страница, а затем используйте прокси для запроса ресурсов под другим доменным именем. 2: после того, как внешний и внутренний интерфейс разделены, после того, как внешний интерфейс будет разработан независимо, proxy_pass также можно использовать для обратного прокси-сервера к серверной службе, или адрес развертывания сервера неудобно раскрывать, и прокси также можно использовать в качестве обратного прокси.

Простой пример:

location /login {
     proxy_pass   http://www.sohu.com/
} 

когда мы посещаемhttp://192.168.0.101:8080/login приведет к прямому переходу на домашнюю страницу Sohu. Это указывает на то, что текущий адрес доступа является прокси-адресом Sohu.com.

Особое внимание следует обратить на наличие слэшей в адресе после прокси:

在这里插入图片描述
Если мы посетим адрес:http://192.168.0.101:8080/login/index.html Есть косые черты: абсолютный адрес, который в итоге переходит на:www.sohu.com/index.htmlБез косой черты: относительный адрес, который заканчивается переходом на:woohoo.SOHU.com/login/index…


3. Rewrite перенаправляет, rewrite имеет 5 командных режимов

Роль перезаписи заключается в изменении uri, но следует отметить, что перезаписи имеет побочный эффект повторного сопоставления местоположения. Поскольку этап обработки proxy_pass является более поздним, чем обработка местоположения, его необходимо прервать, чтобы предотвратить повторную запись от входа в следующее совпадение местоположения и потерю proxy_pass.

1. перерыв следующим образом:

#这个指令表示,如果/login匹配成功,则直接在home路径中查找demo.html文件
#然后跳转到demo.html。注意这是内部跳转,浏览器上的地址url不会变,还是以/login结尾。
location  /login {
       rewrite  ^/  /demo.html  break;
       root  home/;
}

2, перенаправление; следующим образом

#和break差不多,不过这个表示外部跳转,也会跳转到demo.html页面,不过浏览器地址会自动变成demo.html
location  /login {
       rewrite  ^/  /demo.html  redirect;
       root  home/;
}

3, постоянный, аналог перенаправления.

4. last: если он изменен last, nginx сопоставит адрес /demo.html с адресами других локаций, а затем найдет совпадающий адрес и продолжит выполнение. Здесь он выполнит команду /demo.html, а затем внутренне перейдет на страницу /demo.html следующим образом:

location  /login {
       rewrite  ^/  /demo.html  last;
       root  home/;
}
 
location  /demo.html {
       rewrite  ^/  /demo.html  break;
       root  home/;
}

5. Отсутствие изменений означает отсутствие изменений. Вы можете видеть, что за этим переписыванием нет никаких изменений. Когда нет изменений, после сопоставления местоположения оно не остановится и будет продолжать соответствовать следующему местоположению. Знайте, чтобы соответствовать последнему, используйте последний, который соответствует. . следующее

location  /login {
       rewrite  ^/  /demo.html ;
       root  home/;
}

В-четвертых, вверх по течению, конфигурация загрузки

Стратегия, используемая восходящим потоком для настройки нагрузки, nginx поставляется с: polling/weight/ip_hash. Сторонние стратегии доступны для особых нужд (используются реже).

upstream test{
    server 192.168.0.101:8081;
    server 192.168.0.102:8081;
}
 
upstream test1 {
    server 192.168.0.101:8081 weight=2;
    server 192.168.0.102:8081 weight=1;
}
 
upstream test2 {
    ip_hash
    server 192.168.0.101:8081;
    server 192.168.0.102:8081;
}
 
server{
   listen   80;
   server_name  localhost;
 
   location /login {
       proxy_pass   http://test/
   } 
}

При посещении:http://localhost/loginчас,nginxбудет вserver 192.168.0.101:8081; server 192.168.0.102:8081Круговой доступ между двумя сервисами.

upstream test1Указывает, что к указанной выше службе обращаются дважды, а к следующей службе обращаются один раз.

upstream test2Указывает, что хеш-значение IP-адреса клиента используется для определения того, к какой службе осуществляется доступ.После этой настройки службы, к которым обращается один и тот же клиент, обычно не изменяются.


Ссылаться на:blog.CSDN.net/Чжан Лэй082… woo woo woo.cn blog on.com/ 176 выборов подряд…