Несколько моментов о том, как быстро настроить NGINX

Nginx

Несколько моментов о том, как быстро настроить 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. Для получения дополнительных конфигураций, таких как конфигурация распределенного следующего сервера и нескольких экземпляров, я поделюсь ими в отдельной статье. Сегодняшний контент заканчивается здесь; еще раз спасибо за ваше чтение, пока~~