Nginx의 가장 큰 특징은 리버스 프록시와 로드 밸런싱입니다. 이 글에서는 Nginx 로드 밸런싱의 구성에 대해 자세히 설명합니다.
로드 밸런싱
먼저, 로드 밸런싱이 무엇인지 간단히 알아보겠습니다. 말 그대로 이해하려면 N개의 서버가 로드를 균등하게 공유하며, 어떤 서버는 로드가 높아서 다운되지 않고, 어떤 서버는 유휴 상태가 되지 않는다고 설명할 수 있습니다. 그러면 로드 밸런싱의 전제는 여러 서버에서 달성할 수 있다는 것입니다. 즉, 두 개 이상의 서버이면 충분합니다.
테스트 환경
서버가 없기 때문에 이번 테스트에서는 지정된 도메인 이름을 직접 호스팅한 후 VMware에 CentOS 3개를 설치합니다.
테스트 도메인 이름: a.com
서버 IP : 192.168.5.149 (메인)
B서버 IP : 192.168.5.27
C 서버 IP: 192.168.5.126
배포 아이디어
서버 A가 메인 서버 역할을 하며, 도메인 이름은 서버 A(192.168.5.149)로 직접 확인되고, 서버 A는 서버 B(192.168.5.27)와 서버 C(192.168.5.126)로 로드 밸런싱됩니다.
그림과 같이:
도메인 이름 확인
실제 환경이 아니기 때문에 도메인 이름은 테스트용 a.com일 뿐이므로 a.com의 해상도는 호스트 파일에서만 설정할 수 있습니다.
열기: C:WindowsSystem32driversetchosts
끝에
추가
192.168.5.149 a.com
저장하고 종료한 후 명령 모드를 시작하고 ping을 통해 설정이 성공했는지 확인하세요
스크린샷을 보면 a.com이 192.168.5.149IP로 성공적으로 확인되었습니다
서버 nginx.conf 설정
nginx.conf를 엽니다. 파일 위치는 nginx 설치 디렉터리의 conf 디렉터리에 있습니다.
http 섹션
<code>upstream a<span>.</span>com { server <span>192.168</span><span>.5</span><span>.126</span>:<span>80</span>; server <span>192.168</span><span>.5</span><span>.27</span>:<span>80</span>; } server{ listen <span>80</span>; server_name a<span>.</span>com; location <span>/</span> { proxy_pass http:<span>//a.com;</span> proxy_set_header Host <span>$host</span>; proxy_set_header X<span>-Real</span><span>-IP</span><span>$remote_addr</span>; proxy_set_header X<span>-Forwarded</span><span>-For</span><span>$proxy_add_x_forwarded_for</span>; } }</code>
nginx를 저장하고 다시 시작하세요
에 다음 코드를 추가하세요.
B. C 서버 nginx.conf 설정
nginx.confi를 열고 http 섹션에 다음 코드를 추가하세요.
<code><span>server</span>{ listen <span>80</span>; server_name a.com; <span>index</span><span>index</span>.html; root /data0/htdocs/www; }</code>
nginx를 저장하고 다시 시작하세요
테스트
a.com에 접속할 때 어느 서버로 리다이렉트되어 처리되는지 구분하기 위해 서버 B와 C 각각에 내용이 다른 index.html 파일을 작성했습니다.
a.com에 액세스하기 위해 브라우저를 엽니다. 새로 고치면 모든 요청이 메인 서버(192.168.5.149)에 의해 서버 B(192.168.5.27)와 서버 C(192.168.5.126)로 분산되어 로드가 발생하는 것을 볼 수 있습니다. 균형 효과.
B서버 처리페이지
C 서버 처리 페이지
서버 중 하나가 다운되면 어떻게 되나요?
서버가 다운되면 액세스에 영향이 미치나요?
먼저 예제를 살펴보겠습니다. 위의 예제를 바탕으로 머신 C 서버 192.168.5.126이 다운되었다고 가정하고(다운타임 시뮬레이션이 불가능하여 C 서버를 종료했습니다) 다시 방문합니다.
방문 결과:
C 서버(192.168.5.126)가 다운되었음에도 불구하고 웹사이트 접속에는 영향을 미치지 않은 것으로 확인되었습니다. 이렇게 하면 특정 시스템이 로드 밸런싱 모드에서 다운되어 전체 사이트를 끌어 내리는 것에 대해 걱정할 필요가 없습니다.
b.com에서도 로드 밸런싱을 설정해야 하면 어떻게 되나요?
a.com 설정과 마찬가지로 매우 간단합니다. 다음과 같습니다:
b.com의 메인 서버 IP가 192.168.5.149이고, 부하가 192.168.5.150과 192.168.5.151 머신으로 분산되어 있다고 가정합니다
이제 도메인 이름 b.com을 192.168.5.149IP로 확인합니다.
메인 서버(192.168.5.149)의 nginx.conf에 다음 코드를 추가합니다:
<code>upstream b<span>.</span>com { server <span>192.168</span><span>.5</span><span>.150</span>:<span>80</span>; server <span>192.168</span><span>.5</span><span>.151</span>:<span>80</span>; } server{ listen <span>80</span>; server_name b<span>.</span>com; location <span>/</span> { proxy_pass http:<span>//b.com;</span> proxy_set_header Host <span>$host</span>; proxy_set_header X<span>-Real</span><span>-IP</span><span>$remote_addr</span>; proxy_set_header X<span>-Forwarded</span><span>-For</span><span>$proxy_add_x_forwarded_for</span>; } }</code>
nginx를 저장하고 다시 시작하세요
192.168.5.150 및 192.168.5.151 시스템에서 nginx를 설정하고 nginx.conf를 열고 끝에 다음 코드를 추가합니다.
<code><span>server</span>{ listen <span>80</span>; server_name b.com; <span>index</span><span>index</span>.html; root /data0/htdocs/www; }</code>
保存重启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加入以下一段代码:
<code><span>server</span>{ listen <span>8080</span>; server_name a.com; <span>index</span><span>index</span>.html; root /data0/htdocs/www; }</code>
重启nginx,在浏览器输入a.com:8080试试看能不能访问。结果可以正常访问
既然能正常访问,那么我们就可以把主服务器添加到upstream中,但是端口要改一下,如下代码:
<code>upstream a.com { <span>server</span><span>192.168</span><span>.5</span><span>.126</span>:<span>80</span>; <span>server</span><span>192.168</span><span>.5</span><span>.27</span>:<span>80</span>; <span>server</span><span>127.0</span><span>.0</span><span>.1</span>:<span>8080</span>; }</code>
由于这里可以添加主服务器IP192.168.5.149或者127.0.0.1均可以,都表示访问自己。
重启Nginx,然后再来访问a.com看看会不会分配到主服务器上。
主服务器也能正常加入服务了。
最后
一、负载均衡不是nginx独有,著名鼎鼎的apache也有,但性能可能不如nginx。
二、多台服务器提供服务,但域名只解析到主服务器,而真正的服务器IP不会被ping下即可获得,增加一定安全性。
三、upstream里的IP不一定是内网,外网IP也可以。不过经典的案例是,局域网中某台IP暴露在外网下,域名直接解析到此IP。然后又这台主服务器转发到内网服务器IP中。
四、某台服务器宕机、不会影响网站正常运行,Nginx不会把请求转发到已宕机的IP上。
http://www.qttc.net/201208181.html
以上就介绍了Nginx负载均衡设置实例,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

phpidifiesauser의 sssessionusessessioncookiesandssessionids.1) whensession_start () iscalled, phpgeneratesauniquessessionStoredInacookienamedPhpsSessIdonSeuser 'sbrowser.2) thisidallowsphptoretrievessessionDataTromServer.

PHP 세션의 보안은 다음 측정을 통해 달성 할 수 있습니다. 1. Session_REGENEREAT_ID ()를 사용하여 사용자가 로그인하거나 중요한 작업 일 때 세션 ID를 재생합니다. 2. HTTPS 프로토콜을 통해 전송 세션 ID를 암호화합니다. 3. 세션 _save_path ()를 사용하여 세션 데이터를 저장하고 권한을 올바르게 설정할 보안 디렉토리를 지정하십시오.

phpsessionfilesarestoredInTheRectorySpecifiedBysession.save_path, 일반적으로/tmponunix-likesystemsorc : \ windows \ temponwindows.tocustomizethis : 1) austession_save_path () toSetacustomDirectory, verlyTeCustory-swritation;

toretrievedatafromAphPsession, startSessionstart_start () andaccessvariblesinthe $ _sessionArray.forexample : 1) startthessession : session_start (). 2) retrievedata : $ _ session [ 'username']; echo "Welcome,". $ username;

세션을 사용하여 효율적인 쇼핑 카트 시스템을 구축하는 단계에는 다음이 포함됩니다. 1) 세션의 정의와 기능을 이해합니다. 세션은 요청에 따라 사용자 상태를 유지하는 데 사용되는 서버 측 스토리지 메커니즘입니다. 2) 쇼핑 카트에 제품 추가와 같은 기본 세션 관리를 구현합니다. 3) 제품 수량 관리 및 삭제 지원 고급 사용으로 확장; 4) 세션 데이터를 지속하고 보안 세션 식별자를 사용하여 성능 및 보안을 최적화합니다.

이 기사는 PHP의 인터페이스를 생성, 구현 및 사용하는 방법을 설명하여 코드 구성 및 유지 관리에 대한 이점에 중점을 둡니다.

이 기사에서는 PHP의 암호 해싱에 대한 Crypt ()와 Password_hash ()의 차이점에 대해 논의하여 최신 웹 애플리케이션에 대한 구현, 보안 및 적합성에 중점을 둡니다.

기사는 입력 유효성 검사, 출력 인코딩 및 OWASP ESAPI 및 HTML 청정기와 같은 도구를 통해 PHP의 크로스 사이트 스크립팅 (XSS) 방지에 대해 논의합니다.


핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
