Nginx에 之 재 작성

기사 디렉토리

첫째, 환경을 준비

두, 재 작성 소개

2.1 재 작성 점프 장면

2.2 실제 장면을 다시 작성

2.3, 일반적으로 사용되는 정규 표현식 메타 문자

2.4 다시 쓰기 명령

2.5, 위치 분류

2.6 위치 우선

셋째, 특정 장면

3.1, 장면 하나 : 이름 기반 점프

3.2, 장면 2 : 점프에 액세스 할 수있는 클라이언트 IP 주소를 기반으로

3.3, 장면 세 : 이전에 따라, 새 도메인 이름과 점프에 목차를 추가

3.4 개의 장면 : 점프 - 기반 파라미터 매칭

3.5, 장면 다섯 : 모든 PHP 파일 점프의 기반 디렉토리

첫째, 환경을 준비

의 nginx 웹 서버는 www.accp.com 제공합니다.

1, 설치 소스 RPM

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

도 2 및 제본 얌 Nginx에 직접 설치

yum install nginx bind -y

3, DNS 이름 확인

vim /etc/named.conf

Nginx에 之 재 작성

vim /etc/named.rfc1912.zones 
##复制添加一段
zone "accp.com" IN {
        type master;
        file "accp.com.zone";
        allow-update { none; };
};

Nginx에 之 재 작성

cd /var/named
cp -p named.localhost accp.con.zone
vim accp.con.zone 

Nginx에 之 재 작성

4 수정 구성 파일은 nginx에

vim /etc/nginx/conf.d/default.conf

Nginx에 之 재 작성

5, 서비스를 시작 방화벽을 해제

systemctl stop firewalld.service 
setenforce 0

systemctl start named
systemctl start nginx

두, 재 작성 소개

2.1 재 작성 점프 장면

URL은 더 표준화되고 합리적인 보인다;

회사의 동적 URL 주소 서비스를 제공하기 위해 고정 주소로 위장 될 것이다;

웹 사이트 도메인 이름 변경 후 새 도메인 이름 이전 액세스 점프를하자;

서버 및 특정 운영 조정

2.2 실제 장면을 다시 작성

1, Nginx에 구현 요구를 점프 :

재 일치 점프를 사용;

갈 글로벌 변수를 사용하여 일치하는 경우;

사용 위치 다음 점프 경기

2 서버 {}를 재 작성하는 경우 {} 섹션의 위치 {};

3, 도메인 이름 또는 매개 변수 문자열 :

전역 변수의 경우 검색을 사용;

리버스 프록시 proxy_pass를 사용하여

2.3, 일반적으로 사용되는 정규 표현식 메타 문자

Nginx에 之 재 작성

2.4 다시 쓰기 명령

구문 :

Nginx에 之 재 작성

플래그 라벨 정의 :

Nginx에 之 재 작성

마지막으로 휴식과 비교 :

Nginx에 之 재 작성

2.5, 위치 분류

카테고리 :

위치 PATT = {} 정확한 매치]

위치 패티 {} [일반 일치]

위치 ~ 패티 {} [정규 경기]

일반적인 정규 표현식 일치 :

Nginx에 之 재 작성

2.6 위치 우선

동일한 유형, 정합 우선 문자열 길이의 발현;

우선 순위별로 정렬 :

유형 =

^ ~ 형 식

정규 표현식 (~와 ~ *) 유형

기존의 문자열 일치 유형을 눌러 접두사 일치

일반 일치 (/), 다른 일치하는 경우, 모든 요청은 일치하는

셋째, 특정 장면

3.1, 장면 하나 : 이름 기반 점프

실험 환경 : 된 회사 도메인 이름 www.accp.com, 비즈니스 요구 사항이 변경 되었기 때문에, 대신 새 도메인 이름 www.newaccp.com을 사용해야합니다.

요구 사항 :

우리는 이전 도메인을 폐지 할 수

새 도메인 이름을 이전 도메인에서 이동 및 해당 매개 변수는 변경되지 않은 상태로 유지

1, 수정 구성 파일은 nginx에

vim /etc/nginx/conf.d/default.conf
//添加一段
if ($host = 'www.accp.com') {
        rewrite ^/(.*)$ http://www.newaccp.com/$1 permanent;
    }

//域名重定向:就是当访问www.wang.com时,将激动跳转到www.new.wang.com域名。
//permanent:表示永久的意思。

Nginx에 之 재 작성

2、DNS服务提供新域名的解析

vim /etc/named.rfc1912.zones
//复制之前的accp域名声明段修改

Nginx에 之 재 작성

cd /var/named
cp -p accp.com.zone newaccp.com.zone

Nginx에 之 재 작성

3、重启服务

systemctl stop nginx
systemctl start nginx
systemctl restart named

验证:在win10的浏览器中输入新域名www.accp.com

Nginx에 之 재 작성

3.2、场景二:基于客户端IP地址访问跳转

实验要求:今天公司业务版本上线,所有IP访问任何内容都显示一个固定维护页面,只有公司的IP才能访问正常。

公司IP地址:192.168.111.146

PC客户端:192.168.111.140

把上一个实验的nginx配置部分删除,以防影响下面的实验。

1、修改nginx的配置文件,重启服务

vim /etc/nginx/conf.d/default.conf
listen      80;
server_name     www.accp.coom;
#charset koi8-r;
access_log /var/log/nginx/www.accp.com-access.log main;     
#设置是否合法的IP标志
set $rewrite true;
#判断是否为合法IP
if ($remote_addr = "192.168.111.146"){
    set $rewrite false;
}
#非法IP进行判断打上标记
if ($rewrite = true){
    rewrite (.+) /main.html;
}
#匹配标记进行跳转站点
location = /main.html {
    root /usr/share/nginx/html;
}

systemctl stop nginx
systemctl start nginx  

Nginx에 之 재 작성

2、给 main.html 添加自定义页而内容

cd /usr/share/nginx/html

vim main.html
<html>
 <head>
<meta charset="utf-8">
 <title>test网站</title>
 </head>
<body>
    <h1>网站维护中,请稍等~~~</h1>
</body>
</html>

systemctl restart nginx 

用公司的IP地址访问:

Nginx에 之 재 작성

通过客户端IP地址访问:

Nginx에 之 재 작성

3.3、场景三:基于旧、新域名跳转并加目录

例如:现在访问的是 http://bbs.accp.com ,现在需要将这个域名下面的发帖都跳转到 http://www.accp.com/bbs ,注意保持域名跳转后的参数不变。

1、在nginx配置文件中添加以下代码

vim /etc/nginx/conf.d/default.conf 
listen      80;
    server_name     bbs.accp.coom;   

    #charset koi8-r;
    access_log /var/log/nginx/www.accp.com-access.log; 
      #添加一段
    location /post {
        rewrite (.+) http://www.accp.com/bbs$1 permanent;
    }    

Nginx에 之 재 작성

2、修改域名,重启服务

cd /var/named
vim accp.com.zone #把里面的 www 换成 bbs 不然无法解析。

systemctl restart nginx
systemctl restart named

echo "nameserver 192.168.111.145" > /etc/resolv.conf

Nginx에 之 재 작성

3、在浏览器上访问 http://bbs.accp.com/post/a.html ,会帮我们自动跳转 http://www.accp.com/bbs/post/a.html , 此时域名跳转后的参数并没有变还是bbs

Nginx에 之 재 작성

3.4、场景四:基于参数匹配跳转

例如:浏览器访问http://www.accp.com/100-(100|200)-100.html,会自动跳转到 http://www.accp.com 的页面。

1、修改nginx的配置文件,添加以下代码


listen      80;
    server_name     www.accp.coom;   

    #charset koi8-r;
    access_log /var/log/nginx/www.accp.com-access.log main; 
    ## 添加一段
    if ($request_uri ~ ^/100-(100|200)-(\d+).html$) {
        rewrite (.*) http://www.accp.com permanent;
    }

Nginx에 之 재 작성

서버 _ www.accp.com;
경우 (. $ REQUEST_URI ~ ^ / 100- (100 | 200) - (\ D +)를 HTML $) {
재 작성 (*.) http://www.test.com 영구;
}
123456

2, 해결 www가 DNS를. 그리고 서비스를 다시 시작

 cd /var/named
vim accp.com.zone

systemctl restart nginx
systemctl restart named

Nginx에 之 재 작성

3, 브라우저 액세스 http://www.accp.com/100-100-100.html, 자동 www.accp.com 웹 사이트로 이동하는 데 도움이됩니다

Nginx에 之 재 작성

Nginx에 之 재 작성

3.5, 장면 다섯 : 모든 PHP 파일 점프의 기반 디렉토리

예를 들어, 우리는 방문 자동으로 홈 www.accp.com으로 이동합니다, http://www.accp.com/upload/1.php .

1, nginx를 구성 파일을 수정, 다음 코드를 추가합니다

vim /etc/nginx/conf.d/default.conf

 listen     80;
    server_name     www.accp.coom;   
    #charset koi8-r;
    access_log /var/log/nginx/www.accp.com-access.log main;
## 添加
    location ~* /upload/.*\.php$ {
    rewrite (.+) http://www.accp.com permanent;
    }

Nginx에 之 재 작성

2, 서비스를 다시 시작

systemctl restart nginx

브라우저에서 액세스 3, http://www.accp.com/upload/1.php , 우리가 자동으로 www.accp.com 페이지로 이동하는 데 도움이 될 것입니다.

Nginx에 之 재 작성

Nginx에 之 재 작성

추천

출처blog.51cto.com/14557584/2465072