nginx rewrite 및 url 매개 변수 location
rewrite
먼저 다음 nginx 가 rewrite 를 지원 하 는 지 확인 합 니 다.
./nginx -V
nginx 를 설치 할 때 pcre 가 부족 하 다 는 설명 은 지원 되 지 않 습 니 다. nginx 를 다시 설치 해 야 합 니 다.
# pcre
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.gz
tar -zxvf pcre-8.34.tar.gz
cd pcre-8.34
./configure
make
make install
# nginx
cd nginx-1.0.12
./configure --conf-path=/usr/local/nginx/conf/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=/usr/local/src/pcre-8.34 \
make
make install
# nginx
./nginx
# nginx
./nginx �Cs reload
예시:
예 를 들 어 현재 다음 nginx 설정 이 있 습 니 다.
worker_processes 24;
#worker_cpu_affinity 0000000000000001;
worker_rlimit_nofile 65535;
error_log logs/error.log crit;
pid logs/nginx.pid;
events {
use epoll;
worker_connections 2048000;
}
http {
include mime.types;
default_type application/octet-stream;
charset utf-8;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 60;
client_max_body_size 10m;
client_body_buffer_size 128k;
upstream log {
server 192.168.80.147:8338;
}
server {
listen 6061;
server_name 192.168.71.51;
location / {
proxy_pass http://log;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header Remote_Addr $remote_addr;
proxy_set_header X-REAL-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
log_format log '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access_log.log log;
# Nginx
location /NginxStatus {
#stub_status on;
access_log on;
auth_basic "NginxStatus";
#auth_basic_user_file conf/htpasswd;
}
}
}
지금 은 다음 과 같은 방향 을 바 꿔 야 합 니 다.
192.168.71.51/log.aspx �C> 192.168.80.147:8338/log
192.168.71.51/do.aspx �C> 192.168.80.147:8338/do
192.168.71.51/uplog.aspx �C> 192.168.80.147:8338/log
다음 설정 가능:
server {
listen 6061;
server_name 192.168.71.51;
rewrite ^(.*)(?i)uplog.aspx(.*)$ $1log$2 break;
rewrite ^(.*)(?i)log.aspx(.*)$ $1log$2 break;
rewrite ^(.*)(?i)do.aspx(.*)$ $1do$2 break;
location / {
proxy_pass http://log;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header Remote_Addr $remote_addr;
proxy_set_header X-REAL-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
여기 rewrite 설정 에 대해 서 는 다음 과 같은 몇 가 지 를 설명 합 니 다.
url 매개 변수 location
실제 개발 에 서 는 요청 매개 변수 에 따라 요청 처리 자 에 게 경로 가 다른 경우 가 많 습 니 다. POST 요청 매개 변수 에 따라 nginx 플러그 인 이 필요 합 니 다. 여기 서 GET 매개 변수 에 따라 경로 가 어떻게 되 는 지 간단하게 소개 합 니 다.
위의 프로필 입 니까?예 를 들 어 저희 가 방문 을 원 합 니 다.http://192.168.71.51:6061/do1.aspx?t=1212&c=uplogurl 의 인자 c 가 config 나 uplog 일 때 (대소 문자 무시) 다른 곳 으로 이동 합 니 다.
우선 upstream 을 추가 합 니 다. 예 를 들 어:
……
upstream other {
server 192.168.71.41:2210;
}
……
그리고 location 에 다음 과 같은 판단 을 추가 하면 됩 니 다.
……
location / {
if ( $query_string ~* ^(.*)c=config\b|uplog\b(.*)$ ){
proxy_pass http://other;
}
……
관건 은 빨간색 줄, $querystring 은 url 인 자 를 나타 내 고 그 다음은 표준 의 정규 일치 입 니 다. 주의해 야 할 것 은 nginx 에서 if 에 많은 제한 이 있 고 문법 이 까다 로 우 며 위의 문 서 를 구체 적 으로 참조 하 는 것 입 니 다.
간단 하면 서도 실 용적 인 설정 입 니 다. 이 정 보 를 찾 고 있 는 학생 들 에 게 도움 이 되 었 으 면 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.