이 글의 내용은 Nginx와 PHP 8개의 nginx 세션의 설치 및 구성을 공유하기 위한 것입니다. 이는 특정 참조 값을 가지고 있습니다. 필요한 친구는 이를 참조할 수 있습니다.
몇 가지 정보를 확인하고 다른 사람들의 글을 읽었습니다. nginx 세션
PHP여러 서버가 있고 로드 밸런싱을 위해 nginx을 사용하므로 동일한 IP를 구현하기 위해 문서를 다음과 같이 요약합니다. 동일한 페이지에 액세스할 수 있습니다. session이 동기화되지 않으면 가장 일반적인 로그인 상태와 같은 많은 문제가 발생합니다. session을 해결하는 방법은 다음과 같습니다. 문제:
1, session을 사용하지 말고 대신 cookie
session을 사용하세요. cookie은 클라이언트 측에 저장됩니다. , 사용자를 넣을 수 있습니다. 페이지를 방문하여 생성된 session은 cookie에 배치되며, 이는 cookie을 전송 스테이션으로 사용합니다. webserverA을 방문하여 session을 생성한 다음 요청이 B서버에 할당되면 이를 cookie에 넣습니다. server 서버 에이 션이 있는지 여부를 확인하십시오 실제로 존재하지 않는 경우 cookie에 sessoin을 서버 B에 동기화합니다. session을 달성할 수 있습니다. 설명: 이 방법은 구현이 간단하고 편리하며 database에 대한 부담을 늘리지 않지만 클라이언트가 cookies를 비활성화하면 session 이 있습니다. 동기화할 방법이 없어 웹사이트에 손실이 발생합니다. cookie는 암호화되어 있지만 여전히 위조될 수 있습니다.
2, session은 데이터베이스(MySQL 등)에 저장됩니다. php는 session을 데이터베이스에 저장하도록 구성할 수 있습니다. 이 방법은 session을 저장하는 테이블을 다른 데이터베이스 테이블과 함께 배치하는 것입니다. 클러스터가 구축되면 각 mysql 노드에는 이 테이블이 있어야 하며, 이 session 테이블의 데이터 테이블은 실시간으로 동기화되어야 합니다. 참고: 데이터베이스를 사용하여 session 빅 데이터 라이브러리IO가 추가되어 데이터베이스에 대한 부담이 늘어납니다. 게다가 데이터베이스 읽기 및 쓰기 속도가 느려 session의 적시 동기화에 도움이 되지 않습니다. 3, 이 memcache 또는 Redis에 memcache에 존재합니다. 배포 가능, 구성 파일에 저장 공간 설정 방법은 memcache이므로 php는 자체적으로 session 클러스터를 생성하고 session 데이터를 memcache에 저장합니다. 설명: session cookies를 메모리에 넣는 것에 비해 보안이 크게 향상됩니다. 파일에서 읽는 것보다 빠릅니다. 그러나 memcache는 메모리를 여러 사양의 저장 블록으로 나눕니다. 각 블록에는 크기가 있습니다. 이 방법은 memcache가 메모리를 완전히 활용할 수 없으며 저장 블록이 충분하지 않은 경우 발생한다고 판단합니다. , 메모리 오버플로도 발생합니다. 4 및 nginx 기술은 특정 의 요청을 동일한 백엔드로 보낼 수 있으므로 이 ip에서 특정 클라이언트와 특정 백엔드는 stable session, ip_hash은 upstream 구성에 정의되어 있습니다. [html] view plain 복사 ip_hash는 이해하기 쉽지만 ip 요소만 사용하여 백엔드를 할당할 수 있으므로 ip_hash는 결함이 있으며 일부 상황에서는 사용할 수 없습니다. 를 사용하려면 nginx가 프런트 엔드 서버여야 합니다. 그렇지 않으면 nginx가 올바른 ip을 얻지 못하고 를 기반으로 작동할 수 없습니다. ip hash . 예를 들어 squid를 프런트 엔드로 사용하는 경우 nginx에서 ip를 얻으면 squid의 서버 ip 주소만 얻을 수 있습니다. . 전환을 위해 이 주소를 사용하세요. 2. nginx의 백엔드에는 다른 로드 밸런싱 방법도 있습니다. nginx 백엔드에 다른 로드 밸런싱이 있고 다른 방법을 통해 요청을 전환하는 경우 특정 클라이언트의 요청은 동일한 session응용 프로그램 서버에 위치하지 않습니다. 이런 식으로 계산하면 nginx 백엔드는 애플리케이션 서버를 직접 가리키거나 다른 squid을 빌드한 다음 애플리케이션 서버를 가리킬 수만 있습니다. 가장 좋은 방법은 위치를 사용하여 전환을 만들고 session이 필요한 일부 요청을 ip_hash을 통해 전환하고 나머지는 다른 백엔드로 전환하는 것입니다. 관련 권장 사항: Nginx 및 php 설치 및 구성 7차 nginx 로드 밸런싱을 위한 5가지 전략 Nginx 및 php 설치 및 구성 6차 Nginx 역방향 프록시 및 로드 밸런싱 배포 가이드 N 징크스 그리고 PHP 설치 및 구성 5. LINUX는 PHPIZE를 사용하여 PHP GD 확장을 설치합니다1. upstream nginx.example.com
2. {
3. server 192.168.74.235:80;
4. server 192.168.74.236:80;
5. ip_hash;
6. }
7. server
8. {
9. listen 80;
10. location /
11. {
12. proxy_pass
13. http://nginx.example.com;
14. }
15. }
1. 가장 프런트 엔드 서버가 아닙니다.
위 내용은 Nginx 및 PHP 설치 및 구성 8개의 nginx 세션 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!