답변:
HTTP 및 HTTPS 블록을 결합하는 방법
server {
listen 80;
listen 443 default ssl;
# other directives
}
이것은 다른 질문에 대한 답변으로 게시되었습니다. 여기를 참조하십시오 .
지금까지 내가 본 최고의 팁 은 해당 함정 페이지의 작성자가 제공 한 것입니다. https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
일반적으로 "if"를 사용하는 것은 좋지 않습니다 (nginx의 저자에 따라). 가능한 경우, "if (-f ...)"대신 error_page 지시문의 try_file을 사용하는 것이 좋습니다.
maintenence.html 파일과 tip을 결합하고 try_files와 tip을 결합하면 다음과 같은 이점이 있습니다.
위치 / { try_files /maintenance.html $ uri $ uri / @wordpress; }
유지 관리가 끝나면 $ root의 mv maintenance.html 만 있습니다.
if (-f ...) { return 503; }
하고 error_page 503 /maintenance.html
. 어떻게 생각해?
더 강력한 SSL 암호를 사용하도록 nginx를 구성하십시오. 기본적으로 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
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;
}
이 empty_gif
모듈은 특히 웹 서버에서 모니터 응답이 필요한 경우 (nagios / monit / etc 사용) 매우 유용합니다.
location /token {
empty_gif;
}
location /favicon.ico {
empty_gif;
}
location /img/1px.gif {
empty_gif;
}
access_log off;
그 위치에 대한 일반적입니다
다음은 유지 보수 페이지를 반환하는 좋은 방법입니다. 모든 요청이 다시 작성되고 올바른 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;
}
if
올바르게 사용할 경우 문 - 워드 프로세서가 그 말 if
의 당신이 경우 안전 '단지 일을 다시 return xxx;
.
location = /maintenance.html { break; }
필요합니까?
nginx 0.7.12 이상에서 ""는 "호스트"헤더없이 요청을 포착하기 위해 server_name에서 사용할 수 있습니다.
다음을 정의되지 않은 가상 호스트의 포괄으로 사용할 수 있습니다.
server {
server_name _ "";
}
이전 브라우저는 담요 gzip 문에만 문제가있을 수 있으므로 nginx로 gzip 압축을 올바르게 처리하는 방법에 대해 얼마 전에 게시했습니다. HTH.
http://tumblelog.jauderho.com/post/27655495/gzip-compression-with-nginx
그것이 모범 사례인지는 모르겠지만 nginx에서 중첩 된 조건을 얻는 깔끔한 해킹입니다. 다음은 nginx 위키의 샘플입니다 .
location /xxxx/ {
set $test "";
if ($request_method = POST) {
set $test P;
}
if ($http_cookie ~* "CCCC=.+(?:;|$)" ) {
set $test "${test}C";
}
if ($test = PC) {
#rewrite rule goes here.
}
}
동일한 서버 블록이 처리하는 하위 도메인에 대해 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;
}
}
nginx를 프록시로 사용하는 경우, 특히 트래픽이 많은 응용 프로그램을 처리하는 경우 응용 프로그램을 사용하기 전에 nginx 연결이 끊어지지 않도록 시간 초과 설정을 조정하는 것이 중요 할 수 있습니다.
proxy_connect_timeout
proxy_send_timeout