osx에 nginx를 세팅하고 virtual host로 로컬 도메인을 세팅해 주고 워드프레스를 사용할때 아래와 같은 식으로 virtual host를 세팅해주었다.
server {
listen 80;
server_name echo.dev;
root /Users/ray/Sites/USER/echo/public_html;
index index.php index.html index.htm;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off; log_not_found off; expires max;
}
}
이 때 워드프레스를 http://hostname/wordpress
에 설치하고 Site Address를 http://hostname/
WordPress Address를 http://hostname/wordpress
로 이용할 수 있다. (index.php를 /
에 옮기는 작업이 필요) 이렇게 하면 Permalink Settings에서 Post name을 쓰는 것도 문제가 없다.
문제는 WordPress Address를 /
로 바꾸지 않고 그대로 /wordpress
로 사용할 때 문제가 된다. 이 때 아래와 같이 location을 더해주면 문제가 해결된다.
location /wordpress/ {
try_files $uri $uri/ /wordpress/index.php?$args;
}
최종적인 config 모습.
server {
listen 80;
server_name echo.dev;
root /Users/ray/Sites/USER/echo/public_html;
index index.php index.html index.htm;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}
location /wordpress/ {
try_files $uri $uri/ /wordpress/index.php?$args;
}
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off; log_not_found off; expires max;
}
}