>  기사  >  운영 및 유지보수  >  Nginx의 주요 애플리케이션 시나리오는 무엇입니까?

Nginx의 주요 애플리케이션 시나리오는 무엇입니까?

PHPz
PHPz앞으로
2023-05-16 14:55:171536검색

    Nginx의 주요 응용 시나리오

    정적 웹 사이트 배포

    nginx는 HTTP 프로토콜을 통해 서버에 있는 정적 파일(html, css, 그림)을 브라우저 클라이언트에 반환할 수 있는 http 웹 서버입니다.

    예: 서버에 정적 리소스 index.html을 배포합니다

    Nginx의 주요 애플리케이션 시나리오는 무엇입니까?

    index.html을 Linux /opt/www/test

    Nginx의 주요 애플리케이션 시나리오는 무엇입니까?

    nginx.conf에 업로드하여 /test 요청을 차단할 위치를 추가합니다. , 루트에 해당하는 /opt/www 경로는 루트 경로를 나타냅니다. 즉, /test

    location /test {
                root   /opt/www;
                index  index.html;
            }

    앞의 /슬래시입니다. nginx를 시작하거나 nginx를 다시 로드

    Nginx의 주요 애플리케이션 시나리오는 무엇입니까?

    방문해 보세요: http://192.168.253.130/ test /

    Nginx의 주요 애플리케이션 시나리오는 무엇입니까?

    로드 밸런싱

    로드 밸런싱은 하드웨어 로드 밸런싱과 소프트웨어 로드 밸런싱으로 나눌 수 있습니다

    F5, Sangfor, Array 등 하드웨어 로드 밸런싱은 제조사에서 지원한다는 장점이 있습니다. 전문적인 팀이며 안정적인 성능을 가지고 있습니다. 단점은 가격이 비쌉니다.

    Nginx, LVS, HAProxy 등과 같은 소프트웨어 로드 밸런싱은 무료이며 오픈 소스이며 비용이 저렴하다는 장점이 있습니다.

    폴링 방법: 요청 할당 백엔드 서버를 차례로 순서대로 처리하며, 서버에 대한 실제 연결 수와 현재 시스템 로드에 관계없이 각 백엔드 서버를 균등하게 처리합니다.

    http {
        upstream test{
        ##后端实际服务器 nginx在轮询访问以下几台服务器
            server 10.100.30.1:8080;
            server 10.100.30.2:8080;
            server 10.100.30.3:8080;
            server 10.100.30.4:8080;
        }
        server {
        ##前端拦截入口
            listen 80;
            server_name www.test.com;
            location / { 
                proxy_pass http://test;
            }
        }
    }

    가중 폴링 방법: 백엔드 서버마다 시스템 구성과 현재 시스템 부하가 다를 수 있으므로 압력 저항도 다릅니다.

    구성이 높고 로드가 낮은 시스템에 대해 더 높은 가중치를 구성하여 더 많은 요청을 처리할 수 있도록 하고, 구성이 낮고 로드가 높은 시스템에 더 낮은 가중치를 할당하여 시스템 로드를 줄일 수 있습니다. 백엔드를 순차적으로 처리하고 가중치를 부여합니다.

    http {
        upstream test{
        ##后端实际服务器 nginx在轮询访问以下几台服务器
            server 10.100.30.1:8080 weight=1;
            server 10.100.30.2:8080 weight=3;
            server 10.100.30.3:8080 weight=1;
            server 10.100.30.4:8080 weight=1;
        }
        server {
        ##前端拦截入口
            listen 80;
            server_name www.test.com;
            location / { 
                proxy_pass http://test;
            }
        }
    }

    소스 주소 해시 방식: 클라이언트의 IP 주소에 따라 해시 함수를 통해 값을 계산하고, 그 값을 사용하여 서버 목록의 크기를 모듈로화합니다. 결과는 해당 서버의 일련 번호입니다. 클라이언트가 액세스하려고 합니다.

    로드 밸런싱을 위해 소스 주소 해시 방법을 사용하면 백엔드 서버 목록이 변경되지 않은 경우 동일한 IP 주소를 가진 클라이언트가 동일한 백엔드 서버에 매핑되어 매번 액세스할 수 있습니다.

    upstream test{
            ip_hash;
            server 10.100.30.1:8080 weight=1;
            server 10.100.30.2:8080 weight=3;
            server 10.100.30.3:8080 weight=1;
            server 10.100.30.4:8080 weight=1;
        }

    최소 연결 수 방법: 백엔드 서버의 구성이 다르기 때문에 요청 처리가 더 빠르거나 느릴 수 있습니다. 최소 연결 수 방법은 현재 연결 백로그가 가장 작은 방법을 동적으로 선택합니다. 백엔드 서버의 현재 연결 상태 하나의 서버가 현재 요청을 처리하고 백엔드 서비스의 활용 효율성을 최대한 향상시키며 책임을 각 서버에 합리적으로 분산시킵니다.

    upstream test{
            least_conn;
            server 10.100.30.1:8080;
            server 10.100.30.2:8080;
            server 10.100.30.3:8080;
            server 10.100.30.4:8080;
        }

    down: 특정 서비스 중지를 나타냅니다.

    upstream test{
            server 10.100.30.1:8080 down;
            server 10.100.30.2:8080;
            server 10.100.30.3:8080;
            server 10.100.30.4:8080;
        }

    backup: 백업 서버를 지정합니다. 일반적인 상황에서는 다른 서버가 정상적으로 액세스할 수 있는 한 백업 서버에 액세스할 수 없습니다. 대기 서버를 사용하므로 일반적으로 핫 배포를 구현하는 데 사용됩니다. 먼저 대기 서버에 코드를 업데이트한 다음 일반 서버 배포가 완료되면 대기 서버가 대기 상태가 됩니다. 전체 배포 프로세스를 통해 사용자는 가동 중지 시간을 느낄 수 없습니다.

    upstream test{
            server 10.100.30.1:8080 backup;
            server 10.100.30.2:8080 backup;
            server 10.100.30.3:8080;
            server 10.100.30.4:8080;
        }
    • 정적 프록시

    • 정적 및 동적 분리

    • 가상 호스트

    Nginx 사용 시나리오 및 예

    Nginx는 고성능, 동시성 HTTP 서버 및 역방향 프록시 서버는 정적 리소스 서버, 로드 밸런서, 역방향 프록시, 캐시 서버, 웹 서버 등 다양한 시나리오에서 사용할 수 있습니다.

    다음은 몇 가지 사용 시나리오와 예입니다.

    1. 정적 리소스 서버

    Nginx를 정적 리소스 서버로 사용하는 경우 Nginx는 요청된 파일을 직접 반환하므로 웹 서버의 부담이 줄어듭니다. 이 시나리오는 일반적으로 정적 파일 다운로드 또는 비디오와 같은 대용량 파일에 대한 액세스를 제공하는 데 사용됩니다.

    다음은 Nginx 구성의 예입니다.

    server {
        listen       80;
        server_name  example.com;
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
        location /images/ {
            alias /var/www/images/;
        }
        location /downloads/ {
            alias /var/www/downloads/;
        }
    }

    위 구성에서 Nginx는 요청이 /images 아래에 있는 경우 루트 디렉터리(/)에 액세스하기 위한 요청을 /usr/share/nginx/html 디렉터리에 매핑합니다. / 디렉토리 파일, Nginx는 /var/www/images/ 디렉토리에 매핑됩니다. 요청된 파일이 /downloads/ 디렉토리에 있는 파일인 경우 Nginx는 /var/www/downloads/ 디렉토리에 매핑됩니다.

    2. 역방향 프록시

    Nginx를 역방향 프록시 서버로 사용하는 경우 Nginx는 처리를 위해 요청을 웹 서버로 전달한 다음 처리 결과를 클라이언트에 반환합니다.

    이 시나리오는 일반적으로 로드 밸런싱 달성, 웹 서버 보안 강화, 웹 서버의 실제 IP 숨기기 등에 사용됩니다.

    다음은 샘플 Nginx 구성입니다.

    upstream backend {
        server backend1.example.com:8080 weight=3;
        server backend2.example.com:8080;
    }
    server {
        listen 80;
        server_name example.com;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

    上述配置中,Nginx会将访问根目录(/)的请求转发给后端的Web服务器(backend1.example.com和backend2.example.com),其中backend1.example.com的权重为3,backend2.example.com的权重为1,表示backend1.example.com的处理能力更强。

    在转发请求时,Nginx还会设置HTTP头信息中的Host和X-Real-IP字段,从而隐藏Web服务器的真实IP。

    3.负载均衡器

    在使用Nginx作为负载均衡器时,Nginx会将请求均衡地分发到多个Web服务器上,从而实现高并发、高可用的服务。这种场景通常用于Web应用程序的集群部署、分布式系统的部署等。下面是一个示例Nginx配置:

    upstream backend {
        server backend1.example.com:8080;
        server backend2.example.com:8080;
        server backend3.example.com:8080;
    }
    server {
        listen 80;
        server_name example.com;
        location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        }
    }

    上述配置中,Nginx会将请求均衡地分发到三个Web服务器(backend1.example.com、backend2.example.com和backend3.example.com)上,从而实现负载均衡。

    在转发请求时,Nginx还会设置HTTP头信息中的Host和X-Real-IP字段,从而隐藏Web服务器的真实IP。

    4.缓存服务器

    在使用Nginx作为缓存服务器时,Nginx会缓存Web服务器返回的响应,从而减少对Web服务器的请求。这种场景通常用于提高Web应用程序的性能、降低Web服务器的负载等。下面是一个示例Nginx配置:

    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
    server {
    listen 80;
    server_name example.com;
        location / {
            proxy_cache my_cache;
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

    上述配置中,Nginx会将Web服务器返回的响应缓存到/var/cache/nginx/my_cache目录下,并设置缓存有效期为60分钟。在缓存命中时,Nginx会直接返回缓存的响应,从而减少对Web服务器的请求。

    总之,Nginx具有很强的可扩展性和灵活性,可以根据不同的需求配置不同的使用场景。以上仅是一些示例,实际应用中还有很多其他的使用场景。

    5.反向代理服务器

    在使用Nginx作为反向代理服务器时,Nginx会将客户端请求转发到后端的Web服务器上,并将后端服务器返回的响应转发给客户端。这种场景通常用于隐藏后端服务器的真实IP、提高Web应用程序的可用性等。下面是一个示例Nginx配置:

    server {
        listen 80;
        server_name example.com;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

    上述配置中,Nginx会将客户端请求转发到http://backend上,并设置HTTP头信息中的Host和X-Real-IP字段,从而隐藏后端服务器的真实IP。

    6.WebSocket服务器

    在使用Nginx作为WebSocket服务器时,Nginx会将客户端请求转发到后端的WebSocket服务器上,并实现WebSocket协议的连接管理。这种场景通常用于实时通信、游戏等应用程序。

    下面是一个示例Nginx配置:

    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }
    server {
        listen 80;
        server_name example.com;
        location / {
            proxy_pass http://backend;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

    上述配置中,Nginx会将WebSocket请求转发到http://backend上,并设置HTTP头信息中的Upgrade、Connection、Host和X-Real-IP字段,从而实现WebSocket协议的连接管理。

    总之,Nginx具有很多的使用场景,可以根据不同的需求配置不同的服务器功能。以上仅是一些示例,实际应用中还有很多其他的使用场景。

    위 내용은 Nginx의 주요 애플리케이션 시나리오는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제