Научим вас шаг за шагом, как настроить Nginx.
Научим вас шаг за шагом, как настроить Nginx.

В современных интернет-приложениях Nginx стал незаменимым компонентом. Независимо от того, используется ли он в качестве статического сервера ресурсов, обратного прокси-сервера или балансировщика нагрузки, высокая производительность и гибкая конфигурация Nginx делают его популярным.

В этой статье будут подробно представлены несколько распространенных сценариев настройки Nginx на простом и понятном языке и на примерах, чтобы помочь начинающим и опытным разработчикам лучше понять и использовать Nginx.

1. Простая конфигурация

Начнем с самой базовой конфигурации Nginx. Вот очень простой пример конфигурации статического веб-сайта:

Язык кода:nginx
копировать
server {
    listen          80;
    server_name     alex.com; # Введите свое доменное имя
    location / { 
        root /var/www/wwwroot/myblog; # Каталог хранения статических файлов
        index  index.html index.htm;  # Страница по умолчанию
    }
}

Анализ ключевых моментов:

  • listen 80;:Эта поездка Конфигурация Nginx монитор 80 порт, т.е. HTTP Стандартный порт.
  • server_name:Указывает имя домена, обрабатываемое текущим блоком сервера.。
  • location /:Обработать корни URL запрос. В этом блоке местоположения вы определяете запрос / поведение в то время.
  • root:Укажите каталог хранения статических файлов。
  • index:При запросе каталога,Имя файла, возвращаемое по умолчанию.

2. Настройте SSL — переадресация с порта 80 на 443.

Поскольку сетевая безопасность становится все более важной, настройка веб-сайтов с использованием SSL, который реализует TLS/SSL через HTTP для шифрования связи между клиентами и серверами, стала стандартной практикой. В конфигурации ниже показано, как перенаправить http-трафик (порт 80) на https (порт 443):

Язык кода:nginx
копировать
# 80 порт Конфигурация, используется для перенаправления на https
server {
    listen          80;
    server_name     alex.com;
    rewrite ^ https://$http_host$request_uri? permanent;
}
# https Конфигурация
server {
    listen 443 ssl;
    server_name alex.com;     # Доменное имя, привязанное к сертификату
    ssl_certificate /etc/nginx/cert/alex_blog.crt;      # Путь сертификата
    ssl_certificate_key /etc/nginx/cert/alex_blog.key;  # путь к секретному ключу
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  # использоватьсоглашение    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    location / {
        root /var/www/wwwroot/myblog;    # каталог сайта
        index  index.html index.htm;
    }
}

Анализ ключевых моментов:

  • первый server Блок действует как трамплин для принятия 80 запрос порта и передача 301 Постоянное перенаправление на https。
  • второй server блоки фактически обрабатываются https Запрошено.
  • ssl_certificate и ssl_certificate_key указал на SSL Путь к сертификату и закрытому ключу, который необходим для включения https требуется.

3. Настройка обратного прокси

Обратный прокси-сервер Nginx Еще одна общая особенность — она позволяет пересылать клиентские запросы на другие серверы и возвращать их ответы клиенту. Преимущества этого включают сокрытие истинной природы сервера. IP, балансировка нагрузки, кеширование статического контента и т. д. В следующем примере конфигурации показано, как выполнить сопряжение. api.alex.com Перенаправить запрос на другой сервер:

Язык кода:nginx
копировать
server {
    listen 80;
    # доступ api.alex.com Фактический доступ к https://www.alex.com:5200 
    server_name  api.alex.com;
    location / {
        proxy_pass https://www.alex.com:5200; #Обратный адрес прокси
        proxy_http_version 1.1; #Параметры конфигурации (важно)
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Анализ ключевых моментов:

  • proxy_pass Указывает адрес прокси-сервера.
  • proxy_set_header для установки HTTP информация заголовка для обеспечения нормального WebSocket коммуникация.

4. Настройте сервер изображений

Если вам необходимо специально обрабатывать изображения или другие статические ресурсы, Nginx можно настроить как эффективный сервер изображений. Ниже приведен пример конфигурации для обработки запросов файлов изображений по определенному пути:

Язык кода:nginx
копировать
#Регулярное выражение,доступ /home/alex/images/ файлы по пути
location ~ (images/).+(gif|jpg|jpeg|png)$ { 
                expires 24h;
                root /home/alex/;#Укажите путь хранения изображений
                access_log /home/alex/log/images.log;#Путь к хранилищу журналов
                proxy_store on;
                proxy_store_access user:rw group:rw all:rw;
                proxy_temp_path     /home/alex/;#Путь доступа к изображениям
                proxy_redirect     off;
                proxy_set_header    Host 127.0.0.1;
                client_max_body_size  10m;
                client_body_buffer_size 1280k;
                proxy_connect_timeout  900;
                proxy_send_timeout   900;
                proxy_read_timeout   900;
                proxy_buffer_size    40k;
                proxy_buffers      40 320k;
                proxy_busy_buffers_size 640k;
                proxy_temp_file_write_size 640k;
                if ( !-e $request_filename)
                {
                        proxy_pass http://127.0.0.1;#Default 80порт 
                }
        }

Анализ ключевых моментов:

  • Эта позиция соответствует images/ начиная с gifjpgjpegpng В конце пути запроса эти ресурсы кэшируются и регистрируются.

5. Конфигурация Nginx для приложения Vue.

При развертывании интерфейсных проектов на сервере вам обычно необходимо настроить веб-сервер для их размещения. Приложение Vue — один из таких случаев. Следующая конфигурация Nginx подходит для развертывания приложений Vue:

Язык кода:nginx
копировать
server {
    listen 80;
    server_name h5.alex.com;

    error_log /var/log/nginx/frontend-h5.err;
    access_log  /var/log/nginx/frontend-h5.log;

    location / {
        root   /opt/h5;
#        rewrite ^/article/([0-9]+)$ /index.html?id=$1 last;
             try_files $uri $uri/ /index.html;
    }

        location /dapi/ {
           proxy_pass http://172.19.0.23:8502/; 
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $http_x_real_ip;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }


    #
    error_page   500 502 503 504  /50x.html;

    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

Анализ ключевых моментов:

  • try_files Команда используется для последовательного доступа к указанным файлам или каталогам. Если ни один из них не найден, в конечном итоге он будет перенаправлен. /index.html документ. Это очень важно для одностраничных приложений (SPA), поскольку они полагаются на внешнюю маршрутизацию.

6. Настройка и балансировка нагрузки приложений Go Gin.

Go-Gin — это высокопроизводительная веб-инфраструктура, подходящая для создания эффективных веб-приложений. При развертывании в производственной среде вам может понадобиться Nginx в качестве обратного прокси-сервера и реализовать балансировку нагрузки для повышения доступности приложений и скорости ответа. Следующая конфигурация показывает, как настроить обратный прокси-сервер и балансировку нагрузки:

Язык кода:nginx
копировать
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8081;
        server_name  api.blog.com;

        # Перенаправить все пути к http://127.0.0.1:8000/ Вниз
        location / {
            proxy_pass http://127.0.0.1:8000/;
        }
    }
}

Настройка балансировки нагрузки

Используйте gin для запуска двух служб, прослушивающих порт 8001 и порт 8002 соответственно.

Язык кода:nginx
копировать
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    # Установите соответствующий 2 серверные службы
    upstream api.blog.com {
        server 127.0.0.1:8001;
        server 127.0.0.1:8002;
    }

    server {
        listen       8081;
        server_name  api.blog.com;

        location / {
            # Формат: http:// + upstream имя узла
            proxy_pass http://api.blog.com/;
        }
    }
}

Анализ ключевых моментов:

  • upstream Директива определяет группу серверов, которая может содержать один или несколько серверов. В этом примере два Gin Экземпляры приложений запускаются в 8001 и 8002 порт.
  • Когда придет запрос, Nginx распределит его по разным серверам согласно настроенной политике (по умолчанию — опрос).

7. Разделите проекты по каталогам

  • www.blog.com Посетите проект статического документа
  • www.blog.com/frontend Посетите страницу портала
  • www.blog.com/backend Посетите внутреннюю страницу
Язык кода:nginx
копировать
server {
    listen       80;
    server_name  www.blog.com;

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

    location /frontend {
        alias   /usr/share/nginx/html/frontend;
        index  index.html index.htm;
    }

    location /backend {
        alias   /usr/share/nginx/html/backend;
        index  index.html index.htm;
    }

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

8. Некоторые суждения

Язык кода:nginx
копировать
location / {
    # Будут пересылаться только запросы без суффикса. 
    if (!-e $request_filename){
        proxy_pass http://localhost:8080;
        break;
    }
}

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

Я участвую в последнем конкурсе эссе для специального учебного лагеря Tencent Technology Creation 2024. Приходите и разделите со мной приз!

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.