반응형
Nginx에서 URL 재작성(Rewrite) 규칙을 설정하는 방법
Rewrite 규칙을 설정에는 rewrite 지시어와 try_files 지시어를 사용합니다.
1. 특정 URL을 다른 URL로 리디렉션 (301/302 리다이렉트)
location /old-page {
return 301 https://example.com/new-page;
}
- /old-page로 접근하면 /new-page로 영구 리디렉션(301)됨
- 302 리다이렉트를 하려면 return 302로 변경
2. URL 패턴 변경 (rewrite 사용)
location /blog {
rewrite ^/blog/(.*)$ /articles/$1 break;
}
- /blog/some-post → /articles/some-post로 변경
- break는 해당 지점에서 처리 종료
3. 특정 패턴에 대해 리다이렉트
rewrite ^/old/(.*)$ /new/$1 permanent;
- /old/anything → /new/anything로 영구 리디렉션(301)
4. 정규 표현식을 이용한 URL 변환
location ~* ^/category/(.*)/product/(.*)$ {
rewrite ^/category/(.*)/product/(.*)$ /shop?cat=$1&item=$2 break;
}
- /category/electronics/product/laptop → /shop?cat=electronics&item=laptop
- ~*는 대소문자 무시
5. try_files를 활용한 동적 파일 처리
location / {
try_files $uri $uri/ /index.php?$query_string;
}
- 존재하는 파일이면 해당 파일을 사용
- 폴더라면 index.php 처리
- 없으면 /index.php?query_string으로 전달
6. PHP 파일 실행 설정
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
- .php 파일 요청을 PHP-FPM으로 전달
7. 특정 URL에서 PHP 실행 허용
location ~ ^/app/(.+\.php)$ {
rewrite ^/app/(.*)$ /$1 break;
root /var/www/html;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
- /app/something.php → /var/www/html/something.php에서 실행
8. 정적 파일 캐싱 및 압축
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|otf|svg|mp4|webm)$ {
expires 30d;
add_header Cache-Control "public, max-age=2592000";
access_log off;
}
- 이미지, CSS, JS 파일을 30일 동안 캐싱
9. 내부적으로 다른 경로로 매핑
location ~ ^/news {
rewrite ^/news(.*)$ $1?$args break;
alias /app/news/www/public;
}
- /news/index.php → /index.php로 변환하여 PHP 실행
728x90
반응형
'리눅스' 카테고리의 다른 글
우분투에 Docker와 Docker Compose를 설치하는 방법 (0) | 2025.04.01 |
---|---|
Ansible AWX에서 Slack 알림을 구성하는 방법 (0) | 2025.03.26 |
Ansible AWX 설치 시 내부 PostgreSQL 데이터의 지속성을 보장하는 방법 (0) | 2025.03.14 |
Ansible cowsay 기능 비활성화 방법 (0) | 2025.03.14 |
Ansible AWX에서 인벤토리를 추가하는 방법 (0) | 2025.03.13 |