WordPress Nginx 설정 안내
LAMP (Linux + Apache + MySQL + PHP) 는 현재 WordPress 에서 가장 유행 하 는 기술 창 고 를 만 들 지만 Nginx 를 사용 할 수도 있 습 니 다.WordPress 는 Nginx 를 지원 합 니 다. WordPress. com 과 같은 대형 WordPress 사 이 트 는 Nginx 를 기반 으로 합 니 다.
Nginx 를 실시 하 는 방법 은 많 습 니 다.Aach 의 사전 reverse - proxy (역방향 에이전트) 로 사용 할 수 있 으 며, Apache 의 특성 과 기능 을 동시에 사용 할 수 있 으 며, Nginx 고속 의 장점 도 얻 을 수 있다.nginx 를 사용 하 는 많은 사이트 들 이 실제로 Apache 를 실행 하고 있 으 며, Nginx 는 reverse proxy 로 사용 되 고 있다.
이 안내 서 는 Apache 대신 독립 된 Nginx setup 설정 에 사 용 됩 니 다.Nginx 는 Apache 의 완전한 대체 품 이 아 닙 니 다.WordPress 의 배치 시작 에 대하 여 시작 하기 전에 이 관건 들 을 주의 하 십시오.
유 니 버 설 다 중 사이트 지원 (일반 및 다 중 사이트 지원)
WordPress 가 Nginx 와 함께 작업 하려 면 백 엔 드 pp - cgi 를 설정 해 야 합 니 다. FastCGI 나 PHP - FPM 을 선택 할 수 있 습 니 다. PHP 5.3 에 pp - fpm 가 직접 설치 되 어 있 기 때문에 사용 합 니 다.
Nginx 설정 은 5 개의 서로 다른 파일 로 나 뉘 어 있 습 니 다. 이해 하기 쉽 도록 모든 설정 에 대해 상세 하 게 설명 되 어 있 습 니 다. 필 자 는 가능 한 한 Nginx 설정 의 '최고의 실천' 을 시도 해 보 았 습 니 다.
주 시작 파일 (일반)
이 파일 은 / etc / nginx / nginx. conf (또는 / etc / nginx / conf / nginx. conf 는 Arch Linux 를 사용 합 니 다) 입 니 다.
# Generic startup file.
user {user} {group};
# CPU 。 "grep processor /proc/cpuinfo | wc -l"
worker_processes 2;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
# Keeps the logs free of messages about not being able to bind().
#daemon off;
events {
worker_connections 1024;
}
http {
# rewrite_log on;
include mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
# tcp_nopush on;
keepalive_timeout 3;
# tcp_nodelay on;
# gzip on;
#php max upload limit cannot be larger than this
client_max_body_size 13m;
index index.php index.html index.htm;
# Upstream to abstract backend connection(s) for PHP.
upstream php {
#this should match value of "listen" directive in php-fpm pool
server unix:/tmp/php-fpm.sock;
# server 127.0.0.1:9000;
}
include sites-enabled/*;
}
표준 nginx. conf 파일 과 는 조금 다 릅 니 다. 이 설정 은 Ubuntu / Debian 성명 의 최대 탄력성 시작 사이트 (enabled sites) 법 에 따라 "sites - available" 로 설정 을 저장 한 다음 "sites - enabled" 에 연 결 된 프로필 입 니 다.
단일 사이트 설정 (사이트 구성 당)
# Redirect everything to the main site. We use a separate server statement and NOT an if statement - see http://wiki.nginx.org/IfIsEvil
server {
server_name _;
return 302 $scheme://example.com$request_uri;
}
server {
server_name example.com;
root /var/www/example.com;
index index.php;
include global/restrictions.conf;
#
#
include global/wordpress.conf;
# include global/wordpress-ms-subdir.conf;
# include global/wordpress-ms-subdomain.conf;
}
설정 을 여러 세 션 으로 나 누 어 여러 파일 에 넣 으 면 같은 논리 적 재 활용 이 가능 합 니 다. 'global' 하위 디 렉 터 리 는 추가 기능 설정 (유 니 버 설 기능) 을 추가 하 는 데 사용 할 수 있 습 니 다. (Nginx 설치 설정 을 기반 으로 디 렉 터 리 는 / etc / nginx / conf / global / 일 수도 있 습 니 다.)
전역 제한 파일
# Global restrictions configuration file.
# Designed to be included in any server {} block.
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
# Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban)
location ~ /\. {
deny all;
}
# Deny access to any files with a .php extension in the uploads directory
# Works in sub-directory installs and also in multisite network
# Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban)
location ~* /(?:uploads|files)/.*\.php$ {
deny all;
}
General WordPress rules
단일 사이트 설치 상황 에 있어 서 이것 은 'global / ordpress. conf' 파일 입 니 다.
# WordPress single site rules.
# Designed to be included in any server {} block.
# Upstream to abstract backend connection(s) for php
upstream php {
server unix:/tmp/php-cgi.socket;
server 127.0.0.1:9000;
}
server {
## Your website name goes here.
server_name domain.tld;
## Your only path reference.
root /var/www/wordpress;
## This should be in your http block and if it is, it's not needed here.
index index.php;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
# This is cool because no php is touched for static content.
# include the "?$args" part so non-default permalinks doesn't break when using query string
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}
nginxv. 10 및 그 후 버 전의 최신 예, Ref:https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/
WordPress Multisite Subdirectory rules
다 중 사이트 하위 디 렉 터 리 설치, 대응 하 는 'global / ordpress. conf' 파일 은 다음 과 같 습 니 다.
# WordPress multisite subdirectory rules.
# Designed to be included in any server {} block.
map $uri $blogname{
~^(?P/[^/]+/)files/(.*) $blogpath ;
}
map $blogname $blogid{
default -999;
#Ref: http://wordpress.org/extend/plugins/nginx-helper/
#include /var/www/wordpress/wp-content/plugins/nginx-helper/map.conf ;
}
server {
server_name example.com ;
root /var/www/example.com/htdocs;
index index.php;
location ~ ^(/[^/]+/)?files/(.+) {
try_files /wp-content/blogs.dir/$blogid/files/$2 /wp-includes/ms-files.php?file=$2 ;
access_log off; log_not_found off; expires max;
}
#avoid php readfile()
location ^~ /blogs.dir {
internal;
alias /var/www/example.com/htdocs/wp-content/blogs.dir ;
access_log off; log_not_found off; expires max;
}
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
rewrite ^(/[^/]+)?(/wp-.*) $2 last;
rewrite ^(/[^/]+)?(/.*\.php) $2 last;
}
location / {
try_files $uri $uri/ /index.php?$args ;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass php;
}
#add some rules for static content expiry-headers here
}
Ref: https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/
HTTPS in Nginx
Nginx 에서 HTTPS 를 여 는 것 은 매우 간단 합 니 다.
server {
# IPv4 and IPv6 on 443 , and enables HTTPS and HTTP/2 support.
# HTTP/2 is available in nginx 1.9.5 and above.
listen *:443 ssl http2;
listen [::]:443 ssl http2;
# indicate locations of SSL key files.
ssl_certificate /srv/www/ssl/ssl.crt;
ssl_certificate_key /srv/www/ssl/ssl.key;
ssl_dhparam /srv/www/master/ssl/dhparam.pem;
# indicate the server name
server_name example.com *.example.com;
# Enable HSTS. This forces SSL on clients that respect it, most modern browsers. The includeSubDomains flag is optional.
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
# Set caches, protocols, and accepted ciphers.
# This config will merit an A+ SSL Labs score as of Sept 2015.
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:CAMELLIA256-SHA:CAMELLIA128-SHA256;
}
Mozilla 는 아주 좋 은 SSL 설정 생 성 도 구 를 제공 합 니 다.
PS: 다음은 인용 과 캐 시 에 관 한 것 입 니 다. 계속 진행:
WP Super Cache Rules
W3Total Cache Rules
Nginx fastcgi_cache
Better Performance for Static Files in Multisite
Notes
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.