>백엔드 개발 >PHP 튜토리얼 >Nginx 시나리오 적용 기술 공유

Nginx 시나리오 적용 기술 공유

小云云
小云云원래의
2018-01-29 11:17:061453검색

이 기사는 모든 사람에게 도움이 되기를 바라며 주로 Nginx 장면 응용 기술을 공유합니다.

정적 리소스 웹 서비스로서의 Nginx

구성 컨텍스트: http, 서버 또는 위치.

리소스 압축, 도메인 간 액세스, 리칭 방지 등의 시나리오가 포함될 수 있습니다.

리소스 압축 구성 컨텍스트: http, 서버 또는 위치
교차 도메인 구성 컨텍스트: http, 서버 또는 위치
핫링크 방지 구성 컨텍스트: 서버, 위치

구성 참조

<span style="font-size: 14px;">vi /etc/nginx/conf.d/default.conf<br></span>
<span style="font-size: 14px;">server {<br>    ...<br>    <br>    # 开启sendfile,提高网络包的传输效率<br>    sendfile on;<br>    <br>    # 配置图片资源的存放路径及压缩方式<br>    location ~ .*\.(jpg|gif|png)$ {<br>        gzip on;<br>        gzip_http_version 1.1;<br>        gzip_comp_level 2;<br>        gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;<br>        # 图片防盗链配置 <br>        # 不指定referer 协议不正确 放行指定IP 放行SEO优化<br>        valid_referers none blocked 39.104.116.91 ~/google\./;<br>        if ($invalid_referer) {<br>            return 403;<br>        }<br>        root /opt/app/code/images;<br>    }<br><br>    # 配置txt|xml资源的存放路径及压缩方式<br>    location ~ .*\.(txt|xml)$ {<br>        gzip on;<br>        gzip_http_version 1.1;<br>        gzip_comp_level 1;<br>        gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;<br>        root /opt/app/code/doc;<br>    }<br>    # 缓存与跨域场景配置<br>    location ~ .*\.(html|htm)$ {<br>        #给返回报文添加Cache-Control、Expires头,控制缓存<br>        #expires 24h;<br>        #允许跨域到指定域<br>        add_header Access-Control-Allow-Origin http://somehost.com;<br>        add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;<br>        root /opt/app/code;<br>    }<br><br>}<br></span>

Nginx는 프록시 서비스 역할을 합니다.

정방향 프록시

정방향 프록시는 클라이언트 프록시입니다. 클라이언트는 대상 주소에 대한 액세스 요구 사항을 충족하도록 프록시 서버를 설정합니다.

Nginx는 이 프록시 서버 역할을 할 수 있습니다

구성 참조

<span style="font-size: 14px;">vi /etc/nginx/conf.d/default.conf<br></span>
<span style="font-size: 14px;">server {<br>    ...<br>    # 可能会涉及到DNS域名解析<br>    resolver 8.8.8.8;<br>    location / {<br>        # 原封不动的让自己转发客户端的请求<br>        proxy_pass http://$http_host$request_uri;<br>    }<br>}<br></span>

역방향 프록시

역방향 프록시는 서버 측 프록시입니다. 클라이언트로부터 실제 서버 주소를 숨깁니다.

구성 참조

<span style="font-size: 14px;">vi /etc/nginx/conf.d/default.conf<br></span>
<span style="font-size: 14px;">server {<br>location / {<br>        #Real Server地址<br>        proxy_pass http://127.0.0.1:8080;<br>        include proxy_params;<br>    }<br>}<br></span>
<span style="font-size: 14px;"># 其他代理配置独立出去,方便复用<br>vi /etc/nginx/proxy_param<br></span>
<span style="font-size: 14px;"># default就可以了。除非返回301的场景,可能需要改写<br>proxy_redirect defalut;<br><br>#配置header信息,让Real Server了解实际客户端信息<br>proxy_set_header Host $http_host;<br>proxy_set_header X-Real-IP $remote_addr;<br><br>#一些代理超时设置<br>proxy_connect_timeout 30;<br>proxy_send_timeout 60;<br>proxy_read_timeout 60;<br><br>#代理缓冲区设置<br>proxy_buffer_size 32k;<br>proxy_buffering on;<br>proxy_buffers 4 128k;<br>proxy_busy_buffers_size 256k;<br>proxy_max_temp_file_size 256k;<br></span>

Nginx를 로드 밸런싱 서비스로

참조 구성

<span style="font-size: 14px;">vi /etc/nginx/conf.d/default.conf<br></span>
<span style="font-size: 14px;">upstream backend {<br>    server 192.168.1.101:8001;<br>    server 192.168.1.102:8002;<br>    server 192.168.1.102:8003 down;<br>    server 192.168.1.103:8004 backup;<br>}<br>server {<br>    ...<br>    location / {<br>        # 代理到upstream组<br>        proxy_pass http://backend;<br>        include proxy_params;<br>    }<br>}<br></span>

서버 추가 매개변수

업스트림 그룹의 서버 뒤에는 다음 매개변수가 지원됩니다.

max_failsfail_timeout는 순서대로 다른 백엔드 서버에 하나씩 할당됩니다.
매개변수 설명
down 로드 밸런싱에 참여하지 않습니다
backup 예약 백업 섬기는 사람. 다른 노드가 서비스를 제공하지 않는 경우에만 서비스를 제공합니다
허용된 요청 실패 횟수
max_fails 실패 후 서비스가 일시 중지되는 시간 ㅋㅋㅋ 지침
휠 쿼리

가중 폴링

가중치 값이 클수록 할당 확률이 높아집니다 동일한 IP는 동일한 백엔드 서버에 대한 고정 액세스 권한을 가집니다nginx 구성 다시 Act 정적 페이지 튜토리얼php에서 Nginx를 사용하여 역방향 프록시를 구현하는 방법
ip_hash
least_conn 연결 수가 가장 적은 머신
url_hash 이 할당됩니다. 에 따르면 URL 매개변수의 해시 결과
hash 키 값 hash 사용자 정의 키
<span style="font-size: 14px;"># 加权轮询<br>upstream backend {<br>    server 192.168.1.101:8001 weight=5;<br>    server 192.168.1.102:8002;<br>    server 192.168.1.102:8003 down;<br>    server 192.168.1.103:8004 backup;<br>}<br></span>
<span style="font-size: 14px;"># IP HASH<br>upstream backend {<br>    ip_hash;<br>    server 192.168.1.101:8001;<br>    server 192.168.1.102:8002;<br>    server 192.168.1.102:8003 down;<br>    server 192.168.1.103:8004 backup;<br>}<br></span>
<span style="font-size: 14px;"># 最少连接数<br>upstream backend {<br>    least_conn;<br>    server 192.168.1.101:8001;<br>    server 192.168.1.102:8002;<br>    server 192.168.1.102:8003 down;<br>    server 192.168.1.103:8004 backup;<br>}<br></span>
<span style="font-size: 14px;"># URL HASH<br>upstream backend {<br>    url_hash;<br>    server 192.168.1.101:8001;<br>    server 192.168.1.102:8002;<br>    server 192.168.1.102:8003 down;<br>    server 192.168.1.103:8004 backup;<br><br></span>
관련 권장 사항:
nginx 속도 제한 연결 수 제한 자세한 설명

위 내용은 Nginx 시나리오 적용 기술 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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