Эти замечательные способы использования Nginx, вы, должно быть, не представляете!

Java
Эти замечательные способы использования Nginx, вы, должно быть, не представляете!

Адрес фактического центра электронной коммерции SpringBoot (25k+star):GitHub.com/macro-positive/…

Резюме

В этой статье мы объясним использование Nginx в среде Docker с трех точек зрения: обратный прокси-сервер, сжатие файлов и перезапись адресов!

Установка в среде Docker

Скачайте докер-образ nginx

docker pull nginx:1.10

Скопируйте конфигурацию nginx из контейнера

  • Сначала запустите контейнер один раз (чтобы скопировать файл конфигурации):
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-d nginx:1.10
  • Скопируйте файл конфигурации в контейнере в указанную директорию:
docker container cp nginx:/etc/nginx /mydata/nginx/
  • Измените имя файла:
mv nginx conf
  • Завершите работу и удалите контейнер:
docker stop nginx
docker rm nginx

Начните с команды docker

docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10

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

Обратный прокси-сервер означает, что при доступе к вашему прокси-серверу прокси-сервер перенаправит ваш запрос, который может быть перенаправлен на статический путь к ресурсу или на динамический интерфейс службы. Давайте возьмем проксирование доменных имен в качестве примера, чтобы поговорить о том, как выполнять статическое проксирование и динамическое проксирование.

статический прокси

Статический прокси предназначен для проксирования запросов к разным путям статических ресурсов, здесь мыdocs.macrozheng.comЗапрос, переданный в мой проект документации, дляmall.macrozheng.comЗапрос проксируется во внешний проект торгового центра.

  • Во-первых, мы модифицируем хост-файл этой машины:
192.168.6.132 docs.macrozheng.com
192.168.6.132 mall.macrozheng.com
  • Затем загрузите наш проект документа и интерфейсный проект торгового центра в каталог html nginx и распакуйте его:

  • существует/mydata/nginx/conf/conf.dДобавьте файл конфигурации docs.conf в папку для обратного проксирования проекта документации:
server {
    listen       80;
    server_name  docs.macrozheng.com; #修改域名

    location / {
        root   /usr/share/nginx/html/docs; #代理到docs文件夹中
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}
  • существует/mydata/nginx/conf/conf.dДобавьте файл конфигурации mall.conf в папку для реверсивного проксирования фронтенд-проекта mall:
server {
    listen       80;
    server_name  mall.macrozheng.com; #修改域名

    location / {
        root   /usr/share/nginx/html/mall; #代理到mall文件夹中
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}
  • Перезапустите службу nginx:
docker restart nginx
  • пройти черезdocs.macrozheng.comТеперь у нас есть доступ к нашему проекту документации:

  • пройти черезmall.macrozheng.comВы можете получить доступ к внешнему проекту торгового центра:

Динамический прокси

Динамический прокси — перенаправить запрос прокси-сервера на другой сервис, здесь мыapi.macrozheng.comПрокси запроса к фоновой службе mall-admin.

  • Во-первых, мы модифицируем файл хоста этой машины и добавим следующие правила:
192.168.6.132 api.macrozheng.com
  • существует/mydata/nginx/conf/conf.dДобавьте файл конфигурации api.conf в папку, чтобы проксировать запрос к удаленному сервису mall-admin:
server {
    listen       80;
    server_name  api.macrozheng.com; #修改域名

    location / {
    	proxy_pass   http://120.27.63.9:8080; #修改为代理服务地址
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}
  • После перезапуска службы nginx пройдитеapi.macrozheng.com/swagger-ui.htmlВы можете получить доступ к странице документации по API в mall-admin:

сжатие файлов

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

  • Во-первых, мы ограничиваем скорость nginx и ограничиваем скорость доступа каждого соединения до 128 КБ, чтобы создать сценарий относительно медленного доступа;

  • Измените файл конфигурации mall.conf для выполнения операций ограничения скорости:

server {
    listen       80;
    server_name  mall.macrozheng.com;
    
    limit_rate 128k; #限制网速为128K

    location / {
        root   /usr/share/nginx/html/mall;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}
  • Фронтенд проект для торгового центраmall.macrozheng.comДля доступа мы можем обнаружить, что на веб-сайте есть относительно большой файл js, который необходимо загрузить в течение 12 секунд:

  • nginx возвращает информацию заголовка запроса следующим образом:

  • Исправлять/mydata/nginx/confв каталогеnginx.confФайл конфигурации, включите сжатие GZIP;
http {

    gzip on; #开启gzip
    gzip_disable "msie6"; #IE6不使用gzip
    gzip_vary on; #设置为on会在Header里增加 "Vary: Accept-Encoding"
    gzip_proxied any; #代理结果数据的压缩
    gzip_comp_level 6; #gzip压缩比(1~9),越小压缩效果越差,但是越大处理越慢,所以一般取中间值
    gzip_buffers 16 8k; #获取多少内存用于缓存压缩结果
    gzip_http_version 1.1; #识别http协议的版本
    gzip_min_length 1k; #设置允许压缩的页面最小字节数,超过1k的文件会被压缩
    gzip_types application/javascript text/css; #对特定的MIME类型生效,js和css文件会被压缩

    include /etc/nginx/conf.d/*.conf;
}

  • Снова о фронтенд-проекте торгового центраmall.macrozheng.comПосле посещения мы можем обнаружить, что файл js был сжат, а время загрузки сократилось до 3,88 с, что примерно в 3 раза быстрее:

  • nginx возвращает добавленный заголовок запросаContent-Encoding: gzipИнформация:

перезапись адреса

Иногда наш веб-сайт менял доменное имя, но все еще есть пользователи, использующие для доступа старое доменное имя.В настоящее время адрес nginx можно переписать, чтобы пользователи могли перейти на новое доменное имя для доступа.

  • Например, мы использовалиdocs.macrozheng.comЭто доменное имя больше не нужно, и теперь оно изменено наwww.macrozheng.comПриходите посетить проект документации;

  • Измените файл конфигурации docs.conf и перепишите адрес с параметрами на новый адрес:

server {
    listen       80;
    server_name  docs.macrozheng.com; 
    
    rewrite "^/(.*)$" http://www.macrozheng.com/$1; #地址重写到新地址

    location / {
        root   /usr/share/nginx/html/docs; 
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

  • Посетите старое доменное имя в это времяdocs.macrozheng.comперейдет прямо кwww.macrozheng.comидти с.

публика

проект торгового центраПолный набор учебных пособий сериализуется,Обратите внимание на публичный аккаунтПолучите это прямо сейчас.

公众号图片