Несколько моментов о том, как быстро настроить Nginx
Что касается хороших и плохих качеств Nginx, я не думаю, что это необходимо, здесь я в основном делюсь тем, как я быстро настраиваю Nginx в реальном развертывании проекта. Совместно используемый ими исходный код можно использовать в качестве кода шаблона, который можно использовать по мере необходимости в соответствии с реальной ситуацией вашего собственного проекта.
Вот краткий рассказ о том, почему я написал эту статью.В Интернете есть много больших и исчерпывающих статей, которые рассказывают, что такое Nginx, как начать работу и т. д. Я играл во множество словесных игр.В любом случае, когда я прихожу к связаться с Nginx, я иду к документации.Это дало мне ощущение, большой и полный, но беспорядочный. Здесь я хочу рассказать не о теоретических знаниях Nginx, а о некоторых практических навыках, которые можно быстро применить в проекте. Так много ерунды, о которой нужно говорить, начните основную часть этого обмена.
Настройка 1: включите GZIP, чтобы повысить скорость загрузки страниц
http:{
...
gzip on;
gzip_min_length 10;
gzip_comp_level 4;
gzip_disable "MSIE [1-10] \.";
gzip_types text/plain appliaton/x-javascript text/css application/xml image/jpeg image/gif image/png image/svg+xml;
...
}
gzip on | Включить сжатие gzip |
---|---|
gzip_min_lenght 10 | Порог сжатия, сжимаются только файлы размером более 10 КБ |
gzip_com_level 4 | Установите уровень сжатия [0-10], чем больше число, тем лучше степень сжатия, но тем больше времени требуется. |
gzip_desable "MSIE [1-10]." | Для браузера IE сжатие не используется, [1-10] указывает диапазон версий браузера |
gzip_types | Тип сжатия файлов, который необходимо выполнить, добавьте его в зависимости от ситуации. |
В обычных условиях, касающихся конфигурации gzip, достаточно установить вышеуказанные параметры.
Мелодия 2: доменное имя без www переходит к доменному имени с www
server{
listen 80;
server_name http://youdomain.com;
return 301 http://www.youdomain.com$request_uri;
}
Для вашего собственного доменного имени настройте глобальный сервер для пересылки запроса открытого доменного имени, будьте осторожны, добавив «$request_uri».
В интернете есть другое решение этой проблемы, код такой:
server{
listen 80;
server_name www.youdomain.com;
if ( $host !='www.youdomain.com'){
rewrite ^/(.*)$ http://www.youdomain.com/$1 permanent;
}
rewrite ^/(.*)$ http://$host$1 permanent;
}
Я использовал второй метод для настройки в своем собственном проекте, но он не подействовал, поэтому я перешел на первый метод настройки.
Настройка 3: настроить https
Как настроить сервер (http) здесь не будет. В Интернете есть много связанных документов. Здесь мы в основном делимся тем, как настроить HTTPS в Nginx. Код конфигурации выглядит следующим образом:
server{
listen 443 ssl;
server_name www.youdomain.com;
access_log logs/com_youdomain_logs.log;
ssl_certificate c:/sslfile/cert.crt;
ssl_certificate_key c:/sslfile/cert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
location /{
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-real-IP $remote_addr;
proxy_set_header X-Forwarded-proto $scheme;
proxy_connect_timeout 240;
proxy_send_timeout 240;
proxy_read_timeout 240;
proxy_pass http://localhost:8080;
proxy_redirect ~^http://([^:]+)(:\d+)?(.*)$ https://$1$3;
}
}
Несколько замечаний:
- Порт прослушивания меняется с исходного 80 или другого (обычно порт 80) на 443 ssl.
- ssl_certificate настраивает путь, по которому размещается сертификат HTTPS, а ssl_certificate_key настраивает путь, по которому размещается сертификат HTTPS.
- ssl_session_cache настраивает кеш HTTPS, а ssl_session_timeout настраивает жизненный цикл кеша HTTPS.
- В конфигурации местоположения код в части proxy_set_header является фиксированным использованием и не будет представлен.
- proxy_connect_timeout, proxy_send_timeout и proxy_read_timeout в основном настраивают время для установления соединения запроса, отправки данных и чтения данных по HTTPS онлайн (обработка тайм-аута)
- proxy_pass задает объект запроса, который Nginx должен проксировать, например http://localhost:8080, где требуется конфигурация веб-контейнера, которая будет представлена отдельно в следующем разделе.
- proxy_redirect устанавливает перенаправление переадресации запроса после прокси: ~^http://([^:]+)(:\d+)?(.*)$https://$1$3; Перенаправление http-запросов на https.
Для реализации зашифрованных запросов https также требуется взаимодействие веб-контейнера.Здесь конфигурация Apache Tomcat используется в качестве примера для ознакомления.
Настройка 3: Включить поддержку tomcat для HTTPS-запросов
В предыдущем разделе мы настроили прокси-сервер следующим образом:
server{
...
location /{
...
proxy_pass http://localhost:8080;
...
}
...
}
Во-первых, нам нужно установить порт соединителя tomcat (Connector) на 8080, а также установить перенаправленный порт (redirectPort) и прокси-порт (proxyPort) на 443. Конкретный код конфигурации выглядит следующим образом:
...
<Connector prot="8080" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="443" proxyPort="443"/>
...
Затем его необходимо установить в конфигурации хоста.remoteIpHeader,protocolHeaderа такжеprotocolHeaderHttpsValueЗначение этих трех атрибутов, подробная конфигурация выглядит следующим образом:
...
<Host name="localhost" appBase="webapps" ....>
<Value className="org.apache.catalina.values.RemoteIpValue"
remoteIpHeader="X-Forwarded-For"
protocolHeader="X-Forwarded-Proto"
protocolHeaderHttpsValue="https"/>
...
...
<Context docBase="" path="" reloadable="false"></Context>
</Host>
...
Выше приведен процесс обучения комбинации Nginx+tomcat для открытия https-запросов.
Автор: Тан Чаохун
Оригинал: Краткое изложение того, как быстро настроить NGINX
заключительные замечания
Выше приведены некоторые важные моменты настройки, которые я часто использую в реальном процессе разработки проекта, и я надеюсь, что этот обмен может помочь вам. В этой статье в основном рассказывается о некоторых общих навыках настройки небольшой и сложной конфигурации Nginx. Для получения дополнительных конфигураций, таких как конфигурация распределенного следующего сервера и нескольких экземпляров, я поделюсь ими в отдельной статье. Сегодняшний контент заканчивается здесь; еще раз спасибо за ваше чтение, пока~~