> 백엔드 개발 > PHP 튜토리얼 > Nginx 및 PHP 설치 및 구성 6: Nginx 역방향 프록시 및 부하 분산 배포 가이드

Nginx 및 PHP 설치 및 구성 6: Nginx 역방향 프록시 및 부하 분산 배포 가이드

不言
풀어 주다: 2023-03-23 19:34:01
원래의
1987명이 탐색했습니다.

이 기사는 Nginx 및 PHP 설치 및 구성에 대한 Nginx 역방향 프록시 및 로드 밸런싱 배포 가이드를 공유합니다. 필요한 친구는 이를 참조할 수 있습니다.


2. 로드 밸런싱 구성

nginx의 업스트림은 로드 밸런싱을 위해 기본적으로 폴링 방식을 사용합니다. 이 방법에서는 각 요청이 시간순으로 하나씩 다른 백엔드 서버에 할당됩니다. 자동으로 제거됩니다.

또 다른 방법은 ip_hash입니다. 각 요청은 액세스된 IP의 해시 결과에 따라 할당되므로 각 방문자는 백엔드 서버에 대한 고정 액세스 권한을 갖게 되어 세션 문제를 해결할 수 있습니다.
로드 밸런싱은 트래픽이 많은 우리 웹 사이트에서 수행해야 할 작업입니다. 이제 Nginx 서버의 로드 밸런싱 구성 방법이 필요한 학생들에게 도움이 되길 바랍니다.


로드 밸런싱


먼저 로드 밸런싱이 무엇인지 간단히 알아보겠습니다

N서버가 로드를 균등하게 공유하며 로드로 인한 것이 아닙니다. 특정 서버의 가동 중지 시간이 길고 특정 서버가 유휴 상태입니다. 그러면 로드 밸런싱의 전제는 여러 서버에서 달성할 수 있다는 것입니다. 즉, 두 대 이상의 서버이면 충분합니다.

테스트 환경


테스트 도메인 이름

a.com

A

ServerIP 192.168.5.149 (메인)

BB

배포 아이디어A서버를 메인 서버로 사용하면 도메인 이름이 A

서버(192.168.5.149)로 직접 확인되며 로드 밸런싱은 A 서버를 B

서버(192.168.5.27
)로,
C 서버(192.168.5.126)에서 ). AServernginx.confSettings열기 nginx.conf

, 파일 위치는 nginx

conf의 설치 디렉터리 디렉토리 아래. http
섹션

upstream a.com { 
      server  192.168.5.126:80; 
      server  192.168.5.27:80; 
} 
  
server{ 
    listen 80; 
    server_name a.com; 
    location / { 
       proxy_pass         http://a.com; 
        proxy_set_header  Host            $host; 
        proxy_set_header  X-Real-IP        $remote_addr; 
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for; 
    } 
}
保存重启nginx
B、C服务器nginx.conf设置
打开nginx.confi,在http段加入以下代码
server{ 
    listen 80; 
    server_name a.com; 
    index index.html; 
    root /data0/htdocs/www; 
}
로그인 후 복사
저장하고 다시 시작nginx에 다음 코드를 추가하세요.

测试
当访问a.com的时候,为了区分是转向哪台服务器处理我分别在BC服务器下写一个不同内容的index.html文件,以作区分。

打开浏览器访问a.com结果,刷新会发现所有的请求均分别被主服务器(192.168.5.149)分配到B服务器(192.168.5.27)与C服务器(192.168.5.126)上,实现了负载均衡效果。


假如其中一台服务器宕机会怎样?
当某台服务器宕机了,是否会影响访问呢?

我们先来看看实例,根据以上例子,假设C服务器192.168.5.126这台机子宕机了(由于无法模拟宕机,所以我就把C服务器关机)然后再来访问看看。


我们发现,虽然C服务器(192.168.5.126)宕机了,但不影响网站访问。这样,就不会担心在负载均衡模式下因为某台机子宕机而拖累整个站点了。

如果b.com也要设置负载均衡怎么办?
很简单,跟a.com设置一样。如下:

假设b.com的主服务器IP192.168.5.149,负载均衡到192.168.5.150192.168.5.151机器上

现将域名b.com解析到192.168.5.149IP上。

在主服务器(192.168.5.149)nginx.conf加入以下代码:

u

pstream b.com { 
      server  192.168.5.150:80; 
      server  192.168.5.151:80; 
} 
  
server{ 
    listen 80; 
    server_name b.com; 
    location / { 
        proxy_pass        http://b.com; 
        proxy_set_header  Host            $host; 
        proxy_set_header  X-Real-IP        $remote_addr; 
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for; 
    } 
}
保存重启nginx
在192.168.5.150与192.168.5.151机器上设置nginx,打开nginx.conf在末尾添加以下代码:
server{ 
    listen 80; 
    server_name b.com; 
    index index.html; 
    root /data0/htdocs/www; 
}
로그인 후 복사


保存重启nginx

完成以后步骤后即可实现b.com的负载均衡配置。

主服务器不能提供服务吗?
以上例子中,我们都是应用到了主服务器负载均衡到其它服务器上,那么主服务器本身能不能也加在服务器列表中,这样就不会白白浪费拿一台服务器纯当做转发功能,而是也参与到提供服务中来。

如以上案例三台服务器:

A服务器IP 192.168.5.149 (主)

B服务器IP 192.168.5.27

C服务器IP 192.168.5.126

我们把域名解析到A服务器,然后由A服务器转发到B服务器与C服务器,那么A服务器只做一个转发功能,现在我们让A服务器也提供站点服务。

我们先来分析一下,如果添加主服务器到upstream中,那么可能会有以下两种情况发生:

1、主服务器转发到了其它IP上,其它IP服务器正常处理;

2、主服务器转发到了自己IP上,然后又进到主服务器分配IP那里,假如一直分配到本机,则会造成一个死循环。

怎么解决这个问题呢?因为80端口已经用来监听负载均衡的处理,那么本服务器上就不能再使用80端口来处理a.com的访问请求,得用一个新的。于是我们把主服务器的nginx.conf加入以下一段代码:

server{ 
    listen 8080; 
    server_name a.com; 
    index index.html; 
    root /data0/htdocs/www; 
}
로그인 후 복사


重启nginx,在浏览器输入a.com:8080试试看能不能访问。结果可以正常访问

既然能正常访问,那么我们就可以把主服务器添加到upstream中,但是端口要改一下,如下代码:

upstream a.com { 
      server  192.168.5.126:80; 
      server  192.168.5.27:80; 
      server  127.0.0.1:8080; 
}
로그인 후 복사

由于这里可以添加主服务器IP192.168.5.149或者127.0.0.1均可以,都表示访问自己。

다시 시작 Nginx을 한 다음 a.com을 방문하여 메인 서버에 할당되는지 확인하세요.

메인서버에서도 정상적으로 서비스 참여가 가능합니다.

마지막으로
1. 로드 밸런싱은 nginx에만 있는 것이 아닙니다. 유명한 Dingding apache에도 있지만 성능이 nginx만큼 좋지 않을 수 있습니다. .

2. 여러 서버가 서비스를 제공하지만 도메인 이름은 메인 서버로만 확인되며 실제 서버 IPping을 통해 얻을 수 없으므로 어느 정도 보안이 강화됩니다. .

3. upstreamIP은 반드시 내부 네트워크일 필요는 없으며, 외부 네트워크 IP도 사용할 수 있습니다. 그러나 고전적인 경우는 근거리 통신망의 특정 IP이 외부 네트워크에 노출되어 도메인 이름이 이 IP로 직접 확인되는 경우입니다. 그런 다음 메인 서버는 이를 인트라넷 서버 IP로 전달합니다.

4. 특정 서버가 다운되어도 웹사이트의 정상적인 작동에는 영향을 미치지 않습니다. Nginx는 요청을 다운된 서버로 전달하지 않습니다. IP

참고 기사:


http://www.php100.com/html/program/nginx/2013/0905/5525.html

http://blog.csdn.net/xyang81/article/details/51702900

http:// www .linuxdiyf.com/linux/10205.html

http://www.cnblogs.com/jacktang/p/3669115.html

관련 권장 사항:

Nginx 및 PHP 설치 및 PHPIZE를 사용하는 5개의 LINUX 구성 PHP GD 확장 설치

Nginx 및 php 설치 및 구성 4 nginx 및 php 시작 또는 다시 시작

Nginx 및 php 설치 및 구성 3 nginx 구성 파일



위 내용은 Nginx 및 PHP 설치 및 구성 6: Nginx 역방향 프록시 및 부하 분산 배포 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿