Просто обратите внимание, что это не работает для установки Magento. Все еще исследую причины, но я думаю, что это как-то связано со строкой запроса.
Jauder Ho
location / wordpress должен быть полезен, если у вас есть wordpress в подкаталоге с именем "wordpress". Как насчет того, когда у нас есть WordPress в веб-корне "/"?
rahul286
Ответы:
21
Как объединить блоки HTTP и HTTPS.
server {
listen 80;
listen 443 default ssl;
# other directives
}
Это было опубликовано как ответ на другой вопрос. Смотрите здесь .
Как правило, использование «если» является плохой практикой (по мнению автора nginx). если возможно, лучше использовать try_file директив error_page вместо "if (-f ...)"
Объединяя tip с файлом maintenence.html и tip с try_files, мы получаем:
место нахождения / {
try_files /maintenance.html $ uri $ uri / @wordpress;
}
Когда обслуживание закончится, просто запустите mv maintenance.html из $ root.
Это не идеально, так как /maintenance.html будет использоваться как ответ 200. Возможно, вы хотите, чтобы поисковые системы распознали, что страница обслуживания не является вашим реальным веб-сайтом. Возможно, вы захотите вернуть 503 (служба временно недоступна). Единственный способ выяснить, как это сделать, это с помощью if (-f ...) { return 503; }и error_page 503 /maintenance.html. Как вы думаете?
Аарон Гибралтер
11
Настройте nginx для использования более надежных шифров SSL. По умолчанию SSLv2 включен (который вы должны отключить, если это возможно).
Можете ли вы привести пример из реальной жизни для этого? Я до сих пор не до конца понимаю, как это полезно.
Pixel Developer
1
@ The Pixel Developer, он действительно полезен только для скорости. Nginx хранит данные для пустого GIF в памяти, поэтому он никогда не загружается с диска.
Неизвестно
5
также access_log off;для этих мест является обычной практикой
SaveTheRbtz
6
Мы настроили Nginx с помощью Chef, используя эту кулинарную книгу, которая содержит сценарии для обработки конфигурации nginx, аналогичные тому, как Debian выполняет Apache2, а также некоторые примеры шаблонов со стандартными значениями по умолчанию.
На самом деле, я не согласен - я добавил комментарий на serverfault.com/questions/18994/nginx-best-practices/… . По сути, вы хотите вернуть ошибку 503, иначе боты и индексаторы будут думать, что ваша страница обслуживания является частью вашего реального сайта ... Нет ничего плохого в ifутверждении, если вы его правильно используете - в документах говорится, что ifs безопасны, если вы просто делаешь return xxx;.
Аарон Гибралтер
Кроме того, это location = /maintenance.html { break; }необходимо?
Аарон Гибралтер
4
Начиная с nginx 0.7.12 и более поздних, в server_name можно использовать «» для перехвата запросов без заголовка «Host».
Вы можете использовать следующее как ловушку для неопределенных виртуальных хостов.
Ваш пример работает только для запросов с неопределенным vhost или он также будет работать с запросами с неизвестным (неправильным) vhost?
Бенуа
@ Бенуа это работает для всего, что не определено.
неизвестно
Является ли "имя_сервера _ *" не поддерживается nginx 0.7 года?
rahul286
1
Обратите внимание, что это только частично верно. "" будет перехватывать заголовок MISSING Host, но не будет перехватывать запрос с заголовком Host, который ничего не соответствует. Если вам нужен универсальный блок сервера, посмотрите флаг default_server в директиве listen.
Мартин Фьордвальд,
3
Некоторое время назад я также писал о том, как правильно обрабатывать сжатие gzip с помощью nginx, так как в старых браузерах могут возникнуть проблемы только с общим выражением gzip. НТН.
Я бы отнес это к категории «некрасивой, но иногда необходимой практики» - конечно, не то, чтобы ее поощряли.
womble
2
Если вам нужно контекстно переключаться между http и https для поддоменов, обрабатываемых одним и тем же блоком сервера, вы можете использовать переменные для этого. Возможно, это не самый эффективный способ, но он работает:
server {
server mysite.tld ~^.+\.mysite\.tld$;
set $req_ssl = 0;
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;
if ( $files = "admin" ){
set $req_ssl 1;
}
if ( $files = "common" ){
set $req_ssl 2;
}
if ( $scheme = http )
{
set $req_ssl $req_ssl.1;
}
if ( $scheme = https )
{
set $req_ssl $req_ssl.2;
}
if ($req_ssl = 1.1){
rewrite ^ https://$host$uri;
}
if ($req_ssl = 2.2){
rewrite ^ http://$host$uri;
}
}
Я всегда стараюсь использовать rootдирективу в верхней части блока сервера, чтобы иметь возможность использовать $document_rootпеременную и никогда, но никогда, не включать rootдирективу в блок локации.
Ловушки Страница из Nginx вики имеет некоторые отличные советы о лучших практиках.
Если вы используете nginx в качестве прокси-сервера, то изменение настроек тайм-аута может быть важно, чтобы убедиться, что у вас нет сбрасывающих соединений nginx до того, как ваше приложение будет с ними работать, особенно если вы работаете с приложением с высоким трафиком:
Ответы:
Как объединить блоки HTTP и HTTPS.
Это было опубликовано как ответ на другой вопрос. Смотрите здесь .
источник
Безусловно, лучшие советы, которые я когда-либо видел, были получены от автора на его странице-ловушке: https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
источник
Как правило, использование «если» является плохой практикой (по мнению автора nginx). если возможно, лучше использовать try_file директив error_page вместо "if (-f ...)"
Объединяя tip с файлом maintenence.html и tip с try_files, мы получаем:
Когда обслуживание закончится, просто запустите mv maintenance.html из $ root.
источник
if (-f ...) { return 503; }
иerror_page 503 /maintenance.html
. Как вы думаете?Настройте nginx для использования более надежных шифров SSL. По умолчанию SSLv2 включен (который вы должны отключить, если это возможно).
http://tumblelog.jauderho.com/post/121851623/nginx-and-stronger-ssl
источник
Часто более эффективно использовать
map
директиву вместо регулярных выражений при переключении корня для соответствующих поддоменов:источник
empty_gif
Модуль также очень полезно, особенно если вам нужно ответов монитор с веб - сервера ( с помощью Nagios / монит / и т.д.):источник
access_log off;
для этих мест является обычной практикойМы настроили Nginx с помощью Chef, используя эту кулинарную книгу, которая содержит сценарии для обработки конфигурации nginx, аналогичные тому, как Debian выполняет Apache2, а также некоторые примеры шаблонов со стандартными значениями по умолчанию.
источник
Вот хороший способ вернуть страницу обслуживания. Все запросы переписываются и возвращается правильный http-код. (сервис 503 недоступен)
источник
if
утверждении, если вы его правильно используете - в документах говорится, чтоif
s безопасны, если вы просто делаешьreturn xxx;
.location = /maintenance.html { break; }
необходимо?Начиная с nginx 0.7.12 и более поздних, в server_name можно использовать «» для перехвата запросов без заголовка «Host».
Вы можете использовать следующее как ловушку для неопределенных виртуальных хостов.
источник
Некоторое время назад я также писал о том, как правильно обрабатывать сжатие gzip с помощью nginx, так как в старых браузерах могут возникнуть проблемы только с общим выражением gzip. НТН.
http://tumblelog.jauderho.com/post/27655495/gzip-compression-with-nginx
источник
Я не знаю, является ли это наилучшей практикой, но, безусловно, это хороший способ получить вложенные условия в nginx. Вот пример из вики nginx .
источник
Если вам нужно контекстно переключаться между http и https для поддоменов, обрабатываемых одним и тем же блоком сервера, вы можете использовать переменные для этого. Возможно, это не самый эффективный способ, но он работает:
источник
Я всегда стараюсь использовать
root
директиву в верхней части блока сервера, чтобы иметь возможность использовать$document_root
переменную и никогда, но никогда, не включатьroot
директиву в блок локации.Ловушки Страница из Nginx вики имеет некоторые отличные советы о лучших практиках.
источник
Если вы используете nginx в качестве прокси-сервера, то изменение настроек тайм-аута может быть важно, чтобы убедиться, что у вас нет сбрасывающих соединений nginx до того, как ваше приложение будет с ними работать, особенно если вы работаете с приложением с высоким трафиком:
источник
Вы посмотрели здесь?
http://www.directadmin.com/forum/showthread.php?p=137288
источник