Вопрос: Лучшие практики NGinx


Какие наилучшие методы вы используете при использовании NGinx?


47
2018-06-04 08:29


Источник


Просто отметьте, что это не работает для настройки Magento. Все еще исследуя причины, но я думаю, что это имеет какое-то отношение к строке запроса. - Jauder Ho
location / wordpress должно быть полезно, когда у вас есть wordpress в подкаталоге с именем «wordpress». Как насчет того, когда у нас есть wordpress в веб-корневом «/»? - rahul286


Ответы:


Как объединить блоки HTTP и HTTPS.

server {
    listen 80;
    listen 443 default ssl;

    # other directives
}

Это было опубликовано как ответ на другой вопрос. Глянь сюда,


21
2018-06-05 07:53





Безусловно, лучшие советы, которые я когда-либо видел от автора на его странице с ловушкой: https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/


21
2018-06-05 07:57





Как правило, использование «if» является плохой практикой (по мнению автора nginx). если возможно, лучше использовать try_file директив error_page вместо «if (-f ...)»

Объединяя подсказку с файлом maintenence.html и подсказкой с помощью try_files, мы получаем:

место нахождения / {
    try_files /maintenance.html $ uri $ uri / @wordpress;
}

Когда обслуживание заканчивается, просто mv maintenance.html из $ root.


15
2018-06-04 06:52



Это не идеально, так как /maintenance.html будет использоваться как ответ 200. Вероятно, вы хотите, чтобы поисковые системы узнали, что страница обслуживания не является вашим фактическим сайтом. Вероятно, вы захотите вернуть 503 (услуга временно недоступна). Единственный способ выяснить, как это сделать, - это if (-f ...) { return 503; } а также error_page 503 /maintenance.html, Как вы думаете? - Aaron Gibralter


Настройте nginx для использования более сильных шифров SSL. По умолчанию SSLv2 включен (который вы должны отключить, если это возможно).

ssl_ciphers DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:EDH-RSA-DES-CBC3-SHA:AES256-SHA:DES-CBC3-SHA:AES128-SHA:RC4-SHA:RC4-MD5;

http://tumblelog.jauderho.com/post/121851623/nginx-and-stronger-ssl


11
2018-06-04 08:11





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

server {

    server_name mysite.tld ~^.+\.mysite\.tld$;

    map $host $files {
        default            common;
        mysite.tld         common;
        www.mysite.tld     common;
        admin.mysite.tld   admin;
        system.mysite.tld  system;
        *.mysite.tld       users;
    }

    root /var/www/mysite/$files;

}

8
2018-06-04 08:32



вы знаете, что вы можете сделать server_name mysite.tld * .mysite.tld - Unknown


empty_gif модуль также очень полезно, особенно если вам нужно отслеживать ответы с веб-сервера (используя nagios / monit / etc):

location /token {
    empty_gif;
}

location /favicon.ico {
    empty_gif;
}

location /img/1px.gif {
    empty_gif;
} 

8
2018-06-05 08:04



Можете ли вы представить пример реального мира для этого? Я до сих пор не совсем понимаю, как это полезно. - The Pixel Developer
@ Pixel Developer, он только очень полезен для скорости. Nginx хранит данные для пустого gif в памяти, поэтому ему никогда не приходится загружаться с диска. - Unknown
также access_log off; для этих мест распространена практика - SaveTheRbtz


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


6
2018-06-03 19:24





Вот хороший способ возврата страницы обслуживания. Все запросы переписываются и возвращается правильный HTTP-код. (503 Сервис недоступен)

error_page 503 /maintenance.html;

location /
{
    if (-f $document_root/maintenance.html)
    {
        return 503;
    }

    try_files $uri /index.php?$args;
}

location = /maintenance.html
{
    rewrite ^ /maintenance.html break;
}

5



На самом деле, я не согласен - я добавил комментарий к serverfault.com/questions/18994/nginx-best-practices/..., В принципе, вы хотите вернуть ошибку 503, иначе боты и индексы будут считать вашу страницу обслуживания частью вашего фактического сайта ... Нет ничего плохого в том, что ifесли вы используете его правильно - документы говорят, что ifs безопасны, если вы просто делаете return xxx;, - Aaron Gibralter
Также является location = /maintenance.html { break; } необходимо? - Aaron Gibralter