목차
简单且快速的 return
正则表达式 rewrite
http 重定向为 https
统一规范域名
含 www 和 不含 www 之间的重定向
附录
重定向中常用全局变量" >重定向中常用全局变量
nginx 部分常用全局变量
Rewrite正则相关指令详解
文件及目录匹配判断
flag标记
-f 및 파일이 존재하는지 확인하는 데 사용됩니다#🎜🎜##🎜🎜##🎜🎜#-d!-d는 디렉토리가 존재하는지 확인하는 데 사용됩니다 #🎜🎜##🎜🎜##🎜🎜#-e!-e는 파일이나 디렉터리가 존재하는지 확인하는 데 사용됩니다. #🎜 🎜##🎜🎜##🎜🎜#-x!-x는 파일이 실행 가능한지 확인하는 데 사용됩니다#🎜🎜#

플래그 태그" >파일 및 디렉터리 일치 판단 h4># 🎜🎜##🎜🎜##🎜🎜#-f파일이 존재하는지 확인하는 데 사용됩니다#🎜🎜##🎜🎜##🎜🎜#-d!-d는 디렉토리가 존재하는지 확인하는 데 사용됩니다 #🎜🎜##🎜🎜##🎜🎜#-e!-e는 파일이나 디렉터리가 존재하는지 확인하는 데 사용됩니다. #🎜 🎜##🎜🎜##🎜🎜#-x!-x는 파일이 실행 가능한지 확인하는 데 사용됩니다#🎜🎜#

플래그 태그

운영 및 유지보수 엔진스 nginx가 정보를 리디렉션하는 방법

nginx가 정보를 리디렉션하는 방법

Jun 22, 2019 pm 01:13 PM
nginx 리디렉션

nginx가 정보를 리디렉션하는 방법

nginx 是一个灵活且高效的网络服务器,如果想要在nginx服务器中重定,你可以从下面挑选一个适合的方式。

简单且快速的 return

这是一个非常简单的设置方式,只需要个return语句就可以了

return 301 https://example.com$request_uri;
로그인 후 복사
로그인 후 복사

你需要把这段代码放到nginx配置文件的server代码块中,301是永久重定向,你也可以设置成302做一个临时重定向(不建议)。

一个完整的例子:

return 301 https://example.com$request_uri;
로그인 후 복사
로그인 후 복사

正则表达式 rewrite

如果return不能满足你的复杂业务需求,你可以考虑下正则匹配重定向:

rewrite ^/foo/(bar)/(.*)$ https://$server_name/$1/$2 permanent;
로그인 후 복사

同样这也是需要在server代码块中,其中permanent301永久跳转,若需要302可修改为redirect

一个完整的例子:

server {
    listen 80;
    listen [::]:80;
    hostname example.com www.example.com;
    root /var/www/example.com/public;
    rewrite ^/foo/(bar)/(.*)$ $scheme://$server_name/$1/$2 permanent;
}
로그인 후 복사

又如:

server {
    listen       80;
    server_name   www.fangyongle.com  fangyongle.cn;
    if ($host != 'www.fangyongle.com' ) { 
        rewrite ^/(.*)$ https://www.fangyongle.com/$1 permanent; 
    } 
}
로그인 후 복사

再如:

# 根据文件类型设置过期时间
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
    if (-f $request_filename) {
       expires    1h;
       break;
    }
}
로그인 후 복사

使用Maps

如果你有一堆需要重定向的连接映射,你可以考虑在一个地方定义它,然后再通过if来手动判断重定向。

首先定义重定向链接映射redirect-map.conf

map $request_uri $redirect_uri {
    /about.html          /about-us;
    /customers.html      /our-customers;
    /products.html       /our-products;
}
로그인 후 복사

然后在server代码块使用:

include redirect-map.conf;
server {
    […]
    if ( $redirect_uri ) {
        return 301 $redirect_uri;
    }
}
로그인 후 복사

映射也可以有一些语法:

map $request_uri $redirect_uri {
    /about.html          /about-us;
    /customers.html      /our-customers;
    /products.html       /our-products;
    # Match any url that ends in products.html or producs.htm
    ~products\.html?$    /our-products;
    # case-insensitive version of the above
    ~*products\.html?$   /our-products;
    # A named capture that maps
    # e.g. product-1234.html into /products/item-1234/overview
    ~product-(?<sku>\d+)\.html   /products/item-$sku/overview;
}
로그인 후 복사

一些实用的重定向例子

http 重定向为 https

return 301 https://$host$request_uri;
로그인 후 복사

统一规范域名

server_name example.com www.example.com example.net www.example.net _;
if ( $host != $server_name ) {
    return 301 $scheme://$server_name$request_uri;
}
로그인 후 복사

含 www 和 不含 www 之间的重定向

# non-www to www
if ( $host !~ ^www\. ) {
    return 301 $scheme://www.$host$request_uri;
}
로그인 후 복사
# www to non-www
if ( $host ~ ^www\.(?<domain>.+)$ ) {
    return 301 $scheme://$domain$request_uri;
}
로그인 후 복사

附录

重定向中常用全局变量

$scheme       // HTTP方法(如http,https),如:http
$host   // 请求主机头字段,否则为服务器名称,如:blog.fangyongle.com
$server_name   // 服务器名称,如:blog.fangyongle.com
$request_uri   // 包含请求参数的原始URI,不包含主机名,如:/2018/81.html?a=1&b=2
$request_filename  // 当前请求的文件的路径名,由root或alias和URI request组合而成,如:/2013/81.htmlnginx 部分常用全局变量
로그인 후 복사

nginx 部分常用全局变量

$remote_addr//获取客户端ip
$binary_remote_addr//客户端ip(二进制)
$remote_port//客户端port,如:50472
$remote_user//已经经过Auth Basic Module验证的用户名
$host//请求主机头字段,否则为服务器名称,如:blog.fangyongle.com
$request//用户请求信息,如:GET ?a=1&b=2 HTTP/1.1
$request_filename//当前请求的文件的路径名,由root或alias和URI request组合而成,如:/2013/81.html
$status//请求的响应状态码,如:200
$body_bytes_sent        // 响应时送出的body字节数数量。即使连接中断,这个数据也是精确的,如:40
$content_length       // 等于请求行的“Content_Length”的值
$content_type       // 等于请求行的“Content_Type”的值
$http_referer       // 引用地址
$http_user_agent      // 客户端agent信息,如:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36
$args     //与$query_string相同 等于当中URL的参数(GET),如a=1&b=2
$document_uri     //与$uri相同  这个变量指当前的请求URI,不包括任何参数(见$args) 如:/2018/81.html
$document_root     //针对当前请求的根路径设置值
$hostname     //如:centos53.localdomain
$http_cookie    //客户端cookie信息
$cookie_COOKIE    //cookie COOKIE变量的值
$is_args//如果有$args参数,这个变量等于”?”,否则等于”",空值,如?
$limit_rate//这个变量可以限制连接速率,0表示不限速
$query_string    // 与$args相同 等于当中URL的参数(GET),如a=1&b=2
$request_body   // 记录POST过来的数据信息
$request_body_file//客户端请求主体信息的临时文件名
$request_method      //客户端请求的动作,通常为GET或POST,如:GET
$request_uri      //包含请求参数的原始URI,不包含主机名,如:/2018/81.html?a=1&b=2
$scheme       //HTTP方法(如http,https),如:http
$uri//这个变量指当前的请求URI,不包括任何参数(见$args) 如:/2018/81.html
$request_completion//如果请求结束,设置为OK. 当请求未结束或如果该请求不是请求链串的最后一个时,为空(Empty),如:OK
$server_protocol//请求使用的协议,通常是HTTP/1.0或HTTP/1.1,如:HTTP/1.1
$server_addr//服务器IP地址,在完成一次系统调用后可以确定这个值
$server_name//服务器名称,如:blog.fangyongle.com
$server_port//请求到达服务器的端口号,如:80
로그인 후 복사

Rewrite正则相关指令详解

nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,locationIF条件判断块中,命令格式如下:

rewrite <regex> <replacement> <flag>
로그인 후 복사

正则表达式匹配 

  • ~는 대소문자를 구분합니다. ~为区分大小写匹配

  • ~*为不区分大小写匹配

  • !~!~*分别为区分大小写不匹配及不区分大小写不匹配

文件及目录匹配判断

  • -f!-f用来判断是否存在文件

  • -d!-d用来判断是否存在目录

  • -e!-e用来判断是否存在文件或目录

  • -x!-x用来判断文件是否可执行

flag标记

  • last - 基本上都用这个Flag。

  • break - 中止rewirte,不在继续匹配

  • redirect - 返回临时重定向的HTTP状态302

  • permanent - 返回永久重定向的HTTP状态301

使用lastbreak实现URI重写,浏览器地址栏不变。而且两者有细微差别:

  • 使用alias指令必须用last标记

  • 使用proxy_pass指令时,需要使用break标记

  • last标记在本条rewrite规则执行完毕后,会对其所在server{......}标签重新发起请求,而break

  • # 🎜🎜#~*는 대소문자를 구분하지 않습니다. #🎜🎜##🎜🎜##🎜🎜#!~!~*는 각각 대소문자를 구분하고 대소문자를 구분하지 않습니다. 불일치 #🎜🎜#

파일 및 디렉터리 일치 판단 h4># 🎜🎜##🎜🎜##🎜🎜#-f파일이 존재하는지 확인하는 데 사용됩니다#🎜🎜##🎜🎜##🎜🎜#<code style="margin: 0px; padding: 0px;">-d!-d는 디렉토리가 존재하는지 확인하는 데 사용됩니다 #🎜🎜##🎜🎜##🎜🎜#-e!-e는 파일이나 디렉터리가 존재하는지 확인하는 데 사용됩니다. #🎜 🎜##🎜🎜##🎜🎜#-x!-x는 파일이 실행 가능한지 확인하는 데 사용됩니다#🎜🎜#

플래그 태그

#🎜🎜##🎜🎜##🎜🎜#마지막 - 이 플래그는 기본적으로 사용됩니다. #🎜🎜##🎜🎜##🎜🎜#break - Break재작성, 더 이상 #🎜🎜##🎜🎜##🎜🎜#redirect와 일치하지 않습니다. - 임시 리디렉션 HTTP 상태 302#🎜🎜##🎜🎜##🎜🎜#permanent 반환 - 영구 리디렉션 HTTP 상태 301 반환 #🎜🎜#

last code> 및 <code style="margin: 0px; padding: 0px;">breakURI 쓰기, 브라우저 주소 표시줄을 구현합니다. 변함없이 유지됩니다. 그리고 둘 사이에는 미묘한 차이가 있습니다: #🎜🎜##🎜🎜##🎜🎜##🎜🎜# alias 지시어를 사용할 때, 마지막 태그 #🎜🎜##🎜🎜##🎜🎜#을 사용해야 합니다. ; padding: 0px;"> Proxy_pass 지시문을 사용할 때는 break 태그 #🎜🎜#를 사용해야 합니다. >#🎜🎜##🎜🎜#마지막 태그는 뒤에 배치됩니다. rewrite 규칙이 실행되고 code style="margin: 0px; padding: 0px;">server{...}

태그가 요청을 다시 시작하고 break 태그는 이 규칙의 일치가 완료된 후 일치를 종료합니다. #🎜🎜#<p><span style='margin: 0px; padding: 0px; color: rgb(61, 70, 77); font-family: "Helvetica Neue", Helvetica, "PingFang SC", 微软雅黑, Tahoma, Arial, sans-serif; background-color: rgb(255, 255, 255);'><span style='margin: 0px; padding: 0px; color: rgb(61, 70, 77); font-family: "Helvetica Neue", Helvetica, "PingFang SC", 微软雅黑, Tahoma, Arial, sans-serif; background-color: rgb(255, 255, 255);'>더 많은 Nginx 관련 기술 기사를 보려면 </span><a href="http://www.php.cn/nginx/" target="_self" style='margin: 0px; padding: 0px; color: rgb(146, 208, 80); font-family: "Helvetica Neue", Helvetica, "PingFang SC", 微软雅黑, Tahoma, Arial, sans-serif; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-line: none !important;'><span style="margin: 0px; padding: 0px;">Nginx Tutorial</span></a><span style='margin: 0px; padding: 0px; color: rgb(61, 70, 77); font-family: "Helvetica Neue", Helvetica, "PingFang SC", 微软雅黑, Tahoma, Arial, sans-serif; background-color: rgb(255, 255, 255);'> 칼럼을 방문하여 알아보세요! </span></span></p>

위 내용은 nginx가 정보를 리디렉션하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Tomcat 서버에 대한 외부 네트워크 액세스를 허용하는 방법 Tomcat 서버에 대한 외부 네트워크 액세스를 허용하는 방법 Apr 21, 2024 am 07:22 AM

Tomcat 서버가 외부 네트워크에 액세스하도록 허용하려면 다음을 수행해야 합니다. 외부 연결을 허용하도록 Tomcat 구성 파일을 수정합니다. Tomcat 서버 포트에 대한 액세스를 허용하는 방화벽 규칙을 추가합니다. Tomcat 서버 공용 IP에 대한 도메인 이름을 가리키는 DNS 레코드를 만듭니다. 선택 사항: 역방향 프록시를 사용하여 보안 및 성능을 향상합니다. 선택 사항: 보안 강화를 위해 HTTPS를 설정합니다.

nginx에 오신 것을 환영합니다! 어떻게 해결하나요? nginx에 오신 것을 환영합니다! 어떻게 해결하나요? Apr 17, 2024 am 05:12 AM

"Welcome to nginx!" 오류를 해결하려면 가상 호스트 구성을 확인하고, 가상 호스트를 활성화하고, Nginx를 다시 로드하고, 가상 호스트 구성 파일을 찾을 수 없으면 기본 페이지를 만들고, Nginx를 다시 로드해야 합니다. 그러면 오류 메시지가 나타납니다. 사라지고 웹사이트는 정상적으로 표시됩니다.

HTML 파일에서 URL을 생성하는 방법 HTML 파일에서 URL을 생성하는 방법 Apr 21, 2024 pm 12:57 PM

HTML 파일을 URL로 변환하려면 다음 단계를 포함하는 웹 서버가 필요합니다. 웹 서버를 얻습니다. 웹 서버를 설정합니다. HTML 파일을 업로드하세요. 도메인 이름을 만듭니다. 요청을 라우팅합니다.

nodejs 프로젝트를 서버에 배포하는 방법 nodejs 프로젝트를 서버에 배포하는 방법 Apr 21, 2024 am 04:40 AM

Node.js 프로젝트의 서버 배포 단계: 배포 환경 준비: 서버 액세스 권한 획득, Node.js 설치, Git 저장소 설정. 애플리케이션 빌드: npm run build를 사용하여 배포 가능한 코드와 종속성을 생성합니다. Git 또는 파일 전송 프로토콜을 통해 서버에 코드를 업로드합니다. 종속성 설치: SSH를 서버에 연결하고 npm install을 사용하여 애플리케이션 종속성을 설치합니다. 애플리케이션 시작: node index.js와 같은 명령을 사용하여 애플리케이션을 시작하거나 pm2와 같은 프로세스 관리자를 사용합니다. 역방향 프록시 구성(선택 사항): Nginx 또는 Apache와 같은 역방향 프록시를 사용하여 트래픽을 애플리케이션으로 라우팅합니다.

nodejs를 외부에서 접근할 수 있나요? nodejs를 외부에서 접근할 수 있나요? Apr 21, 2024 am 04:43 AM

예, Node.js는 외부에서 액세스할 수 있습니다. 다음 방법을 사용할 수 있습니다. Cloud Functions를 사용하여 함수를 배포하고 공개적으로 액세스할 수 있도록 합니다. Express 프레임워크를 사용하여 경로를 만들고 끝점을 정의합니다. Nginx를 사용하여 Node.js 애플리케이션에 대한 프록시 요청을 역방향으로 수행합니다. Docker 컨테이너를 사용하여 Node.js 애플리케이션을 실행하고 포트 매핑을 통해 노출합니다.

PHP를 사용하여 웹사이트를 배포하고 유지하는 방법 PHP를 사용하여 웹사이트를 배포하고 유지하는 방법 May 03, 2024 am 08:54 AM

PHP 웹 사이트를 성공적으로 배포하고 유지하려면 다음 단계를 수행해야 합니다. 웹 서버(예: Apache 또는 Nginx) 선택 PHP 설치 데이터베이스 생성 및 PHP 연결 서버에 코드 업로드 도메인 이름 및 DNS 모니터링 웹 사이트 유지 관리 설정 단계에는 PHP 및 웹 서버 업데이트, 웹 사이트 백업, 오류 로그 모니터링 및 콘텐츠 업데이트가 포함됩니다.

Fail2Ban을 사용하여 무차별 대입 공격으로부터 서버를 보호하는 방법 Fail2Ban을 사용하여 무차별 대입 공격으로부터 서버를 보호하는 방법 Apr 27, 2024 am 08:34 AM

Linux 관리자의 중요한 작업은 불법적인 공격이나 액세스로부터 서버를 보호하는 것입니다. 기본적으로 Linux 시스템에는 iptables, UFW(Uncomplicated Firewall), CSF(ConfigServerSecurityFirewall) 등과 같이 잘 구성된 방화벽이 함께 제공되어 다양한 공격을 방지할 수 있습니다. 인터넷에 연결된 모든 컴퓨터는 악의적인 공격의 잠재적인 대상입니다. 서버에 대한 불법 액세스를 완화하는 데 사용할 수 있는 Fail2Ban이라는 도구가 있습니다. Fail2Ban이란 무엇입니까? Fail2Ban[1]은 무차별 공격으로부터 서버를 보호하는 침입 방지 소프트웨어입니다. Python 프로그래밍 언어로 작성되었습니다.

저와 함께 Linux를 배우고 Nginx를 설치해 보세요. 저와 함께 Linux를 배우고 Nginx를 설치해 보세요. Apr 28, 2024 pm 03:10 PM

오늘은 Linux 환경에서 Nginx를 설치하는 방법을 안내해 드리겠습니다. 여기서 사용하는 Linux 시스템은 CentOS7.2입니다. 설치 도구 준비 1. Nginx 공식 홈페이지에서 Nginx를 다운로드하세요. 여기에 사용된 버전은 1.13.6.2입니다. 다운로드한 Nginx를 Linux에 업로드합니다. 여기서는 /opt/nginx 디렉터리를 예로 사용합니다. 압축을 풀려면 "tar-zxvfnginx-1.13.6.tar.gz"를 실행하세요. 3. /opt/nginx/nginx-1.13.6 디렉터리로 전환하고 초기 구성을 위해 ./configure를 실행합니다. 다음 프롬프트가 나타나면 컴퓨터에 PCRE가 설치되어 있지 않으며 Nginx를 설치해야 함을 의미합니다.

See all articles