>  기사  >  운영 및 유지보수  >  nginx 리버스 프록시 두 개의 다른 서버

nginx 리버스 프록시 두 개의 다른 서버

步履不停
步履不停원래의
2019-06-22 11:21:066423검색

nginx 리버스 프록시 두 개의 다른 서버

1. 역방향 프록시란:

역방향 프록시 서버는 서버 측에 설정되어 자주 요청되는 페이지를 버퍼링하여 서버의 작업 부하를 완화하고 클라이언트 요청을 내부적으로 전달합니다. 네트워크상의 대상 서버는 서버에서 얻은 결과를 인터넷에서 연결을 요청하는 클라이언트로 반환합니다. 이때 프록시 서버와 대상 호스트는 외부 세계에 서버로 나타납니다.

2. 역방향 프록시의 주요 기능:

현재 웹사이트에서는 내부 네트워크 서버에 대한 외부 네트워크의 악의적인 공격을 방지하는 것 외에도 서버 부담을 줄이기 위한 캐싱 및 접근 보안 제어도 가능합니다. 로드 밸런싱을 수행하면 사용자 요청을 여러 서버에 분산시킵니다.

3. Nginx 구성 리버스 프록시:

Nginx는 최근 몇 년 동안 인기 있는 리버스 프록시 서버로 대상 호스트에 설치되며 주로 서비스를 제공하기 위해 클라이언트 요청을 전달하는 데 사용됩니다. nginx의 기능은 요청을 후속 서버로 전달하고 현재 요청을 처리할 대상 호스트를 결정하는 것입니다.

3.1 구성 대상:

인트라넷에 두 개의 웹 서버, 즉 10.0.5.87 및 10.0.5.123이 구축되었습니다. 이제 Nginx를 사용하여 역방향 프록시 서버를 구축해야 합니다.

- 이 두 서버에 액세스할 수 있습니다.

- 요청 패키지의 헤더 필드를 수정할 수 있습니다.

3.2 구현 방법:

nginx 구성 파일 수정:

#配置cache模块
proxy_cache_path /nginx/cache/first levels=1:2 keys_zone=first:20m max_size=1g;
server {
        #侦听www.local_host.ik的80端口
        listen       80;
        server_name  www.local_host.ik;
        #对aspx后缀的进行负载均衡请求
    location / {
                # root   /root;#定义服务器的默认网站根目录位置
                index index.php index.html index.htm;#定义首页索引文件的名称
                proxy_pass  http://10.0.5.87:8080/;#请求转向定义的服务器
                #以下是一些反向代理的配置可删除.
                proxy_redirect off;
                #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                client_max_body_size 10m;       #允许客户端请求的最大单文件字节数
                client_body_buffer_size 128k;   #缓冲区代理缓冲用户端请求的最大字节数,
                proxy_connect_timeout 90;       #nginx跟后端服务器连接超时时间(代理连接超时)
                proxy_send_timeout 90;          #后端服务器数据回传时间(代理发送超时)
                proxy_read_timeout 90;          #连接成功后,后端服务器响应时间(代理接收超时)
                proxy_buffer_size 4k;           #设置代理服务器(nginx)保存用户头信息的缓冲区大小
                proxy_buffers 4 32k;            #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
                proxy_busy_buffers_size 64k;    #高负荷下缓冲大小(proxy_buffers*2)
                proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
                #启用cache并指定大小
                proxy_cache first;
                proxy_cache_valid 200 10m;
    }
    add_header X-Via $server_addr;
    add_header X_cache_hit $upstream_cache_status;
}
#第二个虚拟服务器
server {
        #侦听www.fengyanjiao.ik的80端口
        listen       80;
        server_name  www.fengyanjiao.ik;
        #对aspx后缀的进行负载均衡请求
    location / {
                # root   /root;#定义服务器的默认网站根目录位置
                index index.php index.html index.htm;#定义首页索引文件的名称
                proxy_pass  http://10.0.5.123:5004/;#请求转向定义的服务器
                #以下是一些反向代理的配置可删除.
                proxy_redirect off;
                #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                client_max_body_size 10m;       #允许客户端请求的最大单文件字节数
                client_body_buffer_size 128k;   #缓冲区代理缓冲用户端请求的最大字节数,
                proxy_connect_timeout 90;       #nginx跟后端服务器连接超时时间(代理连接超时)
                proxy_send_timeout 90;          #后端服务器数据回传时间(代理发送超时)
                proxy_read_timeout 90;          #连接成功后,后端服务器响应时间(代理接收超时)
                proxy_buffer_size 4k;           #设置代理服务器(nginx)保存用户头信息的缓冲区大小
                proxy_buffers 4 32k;            #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
                proxy_busy_buffers_size 64k;    #高负荷下缓冲大小(proxy_buffers*2)
                proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
    }
}

클라이언트 호스트 파일 구성:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.183.22 www.fengyanjiao.ik
192.168.183.22 www.local_host.ik

3.3 테스트:

3.3.1 클라이언트에서 요청을 시작합니다(캐시 없음):

curl www.fengyanjiao.ik

그러면 응답 패킷이 표시됩니다. 실제 서버 10.0.5.123에서 패킷을 캡처하면 프록시 http 요청 메시지를 볼 수 있습니다. 이는 동적 페이지이므로 캐시되지 않습니다.

3.3.2 클라이언트에서 요청을 시작합니다(캐시 포함):

curl www.local_host.ik

그러면 응답 패킷이 표시됩니다. 실제 서버 10.0.5.87에서 패킷을 캡처하면 프록시 http 요청 메시지를 볼 수 있습니다. 이 요청 후에는 프록시 서버 /nginx/cache/first/3/4c 디렉터리에서 캐시 파일 4a0993df8ef6191d1b1e12fa56c804c3을 볼 수 있습니다.

다음에는 클라이언트에서 www.local_host.ik을 요청하고 클라이언트에서 패킷을 캡처하면 볼 수 있습니다.

더 많은 Nginx 관련 기술 기사를 보려면 Nginx Tutorial 칼럼을 방문하여 알아보세요!

위 내용은 nginx 리버스 프록시 두 개의 다른 서버의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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