Nginx + lamp 동정 분리 프로젝트 구축

10209 단어
Nginx + lamp 동정 분리 프로젝트 구축
1. nginx 대리 의 개술;2. nginx 의 정방 향 대리;3. nginx 의 역방향 대리;4. nginx 의 부하 균형;5. 사례: nginx 역방향 프 록 시 와 결합 하여 nginx + lamp 를 구축 하여 동정 페이지 분리 와 phop 서버 의 부하 균형 을 실현 합 니 다.
1. nginx 대리 의 개술;
요약: nginx 는 자 유 롭 고 개 원 된 고성능 HTTP 서버 와 역방향 프 록 시 서버 입 니 다.또한 IMAP, POP 3, SMTP 프 록 시 서버 이기 도 합 니 다.nginx 는 내부 네트워크 프 록 시 로 인터넷 에 접속 할 수 있 는 프 록 시 서버 이 며, nginx 는 역방향 프 록 시 로 부하 균형 을 이 룰 수 있 습 니 다.
2. nginx 의 정방 향 대리;
해석: 현재 의 인터넷 환경 에서 우리 가 기술 이 필요 하기 때문에 외국 의 일부 사 이 트 를 방문 해 야 한다 면 외국 에 있 는 한 사 이 트 는 우리 가 브 라 우 저 를 통 해 방문 할 수 없다 는 것 을 알 게 될 것 이다. 이때 모두 가 FQ 를 조작 하여 방문 할 수 있다. FQ 의 방식 은 주로 외국 사 이 트 를 방문 할 수 있 는 프 록 시 서버 를 찾 는 것 이다.우 리 는 프 록 시 서버, 프 록 시 서버 에 외국 사 이 트 를 방문 한 후에 방문 한 데 이 터 를 우리 에 게 전달 할 것 을 요청 할 것 입 니 다!상기 와 같은 프 록 시 모델 은 정방 향 프 록 시 라 고 하 는데 정방 향 프 록 시 의 가장 큰 특징 은 클 라 이언 트 가 방문 할 서버 주 소 를 매우 명확 하 게 하 는 것 이다.서버 는 어떤 프 록 시 서버 에서 요청 하 는 지 만 알 고 어떤 구체 적 인 클 라 이언 트 에서 왔 는 지 알 지 못 합 니 다.프 록 시 모드 로 실제 클 라 이언 트 정 보 를 차단 하거나 숨 기 고 있 습 니 다.
3. nginx 의 역방향 대리;
1 층: client, 클 라 이언 트 층, http 요청 단 위 를 보 냅 니 다.2 층: 역방향 프 록 시 층, 에이전트 층 은 client 클 라 이언 트 의 요청 을 책임 지고 프 록 시 를 3 층 (real server) 의 실제 서버 노드 로 전송 하 며 real server 노드 가 client 앞 에 노출 되 지 않도록 합 니 다.3 층: real server, 서버 층, cleint 클 라 이언 트 의 요청 을 진실 하 게 처리 합 니 다. 보통 여러 대의 서버 로 구성 되 어 부하 균형 효 과 를 형성 합 니 다.
4. nginx 의 부하 균형;
개술: nginx 는 역방향 프 록 시 서버 역할 을 했 습 니 다. 어떤 규칙 에 따라 배 포 를 요청 합 니까?사용 하지 않 는 프로젝트 응용 장면, 배포 규칙 은 제어 할 수 있 습 니까?실현 방식: 하드웨어 부하 균형: 하 드 부하 라 고도 부 릅 니 다. 예 를 들 어 F5 부하 균형, 상대 적 으로 원가 가 비 싸 지만 데이터 의 안정성 안전성 등 은 매우 좋 은 보장 이 있 습 니 다. 예 를 들 어 중국 이동 중국 연합 과 같은 회 사 는 하 드 부하 로 조작 할 수 있 습 니 다.소프트웨어 부하 균형: 더 많은 회사 들 이 원가 원인 을 고려 하여 소프트웨어 부하 균형 을 선택 할 것 이다. 소프트웨어 부하 균형 은 기 존의 기술 을 이용 하여 호스트 하드웨어 와 결합 하여 실현 하 는 메시지 대기 열 배포 체제 이다.nginx 의 부하 균형 알고리즘: 1. weight 폴 링 (기본 값): 받 은 요청 은 순서대로 백 엔 드 서버 에 배 치 됩 니 다.이러한 방식 에서 서로 다른 백 엔 드 서버 에 가중치 (weight) 를 설정 하여 서로 다른 서버 에서 요청 한 배분 율 을 조정 할 수 있 습 니 다.가중치 데이터 가 클 수록 요청 에 분 배 될 확률 이 높 습 니 다.2.ip_hash: 모든 요청 은 시작 클 라 이언 트 의 ip 의 hash 결과 에 따라 일치 합 니 다. 이러한 알고리즘 은 다음 고정 ip 주소 의 클 라 이언 트 가 같은 백 엔 드 서버 에 접근 합 니 다. 이것 은 클 라 이언 트 배치 환경 에서 session 공유 문 제 를 어느 정도 해결 합 니 다.3. fair: 스마트 조정 스케줄 링 알고리즘 은 백 엔 드 서버 의 요청 에 따라 응답 하 는 시간 까지 균형 적 으로 분 배 됩 니 다. 응답 시간 이 짧 고 처리 효율 이 높 은 서버 는 요청 할 확률 이 높 으 며 응답 시간 이 길 고 처리 효율 이 낮은 서버 에 분 배 된 요청 이 적 습 니 다.앞의 두 가지 장점 을 결합 한 스케줄 링 알고리즘그러나 주의해 야 할 것 은 nginx 는 기본적으로 fair 알고리즘 을 지원 하지 않 습 니 다. 이 알고리즘 을 사용 하려 면 upstream 을 설치 하 십시오.fair 모듈;4.url_hash: 방문 한 url 의 hash 결과 에 따라 요청 을 할당 합 니 다. 요청 한 url 은 백 엔 드 에 고정된 서버 를 가리 키 며 nginx 가 정적 서버 로 서 캐 시 효율 을 높 일 수 있 습 니 다.마찬가지 로 nginx 는 기본적으로 이러한 스케줄 링 알고리즘 을 지원 하지 않 습 니 다. 사용 하려 면 nginx 의 hash 패 키 지 를 설치 해 야 합 니 다.
5. 사례: nginx 역방향 프 록 시 와 결합 하여 nginx + lamp 를 구축 하여 동정 페이지 분리 와 phop 서버 의 부하 균형 을 실현 합 니 다.
사례 토폴로지:
사례 환경: 시스템 유형 IP 주소 호스트 이름 메모리 에 필요 한 소프트웨어 Centos 7.4 1708 64bit 192.168.100.101 www. linuxfan. cn 1G nginx - 1.12.2. tar. gzCentos 6.5 64bit 192.168.100.150 real1. linuxfan. cn 1G httpd - 2.2.17. tar. gz, cmake - 2.8.6. tar. gz, mysql - 5.5.2.22. tar. gz, libmcrypt - 2.5.8. tar. gz, mcrypt - 2.6.8. tar. gz, mhash - 0.9.9. tar. gz, php - 5.3.28. tar. gzZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gzCentos 6.5 64bit 192.168.100.151 real2.linuxfan.cn 1G httpd-2.2.17.tar.gz、cmake-2.8.6.tar.gz、mysql-5.5.22.tar.gz、libmcrypt-2.5.8.tar.gz、mcrypt-2.6.8.tar.gz、mhash-0.9.9.9.tar.gz、php-5.3.28.tar.gz、ZendGuardLoader-php-5.3-linux-glibc23-x86_64. tar. gz 사례 절차: 61656 ℃ 에서 real1. linuxfan. cn 노드 의 lamp 서 비 스 를 배치 합 니 다.『 61656 』 real2. linuxfan. cn 노드 의 lamp 서 비 스 를 배치 합 니 다.『 61656 』 www. linuxfan. cn 노드 의 nginx 서 비 스 를 설치 합 니 다.직경 61656. nginx 노드 의 역방향 대리 서 비 스 를 설정 합 니 다.『 61656 』 클 라 이언 트 가 테스트 프 록 시 클 라 이언 트 를 방문 합 니 다.『 61656 』 로그 분석 접근 상황 보기;
『 61656 』 real1. linuxfan. cn 노드 의 lamp 서 비 스 를 배치 합 니 다.
[root@real1 ~]# ls
lamp_install_publis-app-2015-07-16.tar.xz
[root@real1 ~]# tar Jxvf lamp_install_publis-app-2015-07-16.tar.xz
[root@real1 ~]# cd bin/
[root@real1 bin]#./apache_install.sh &&./mysql_install.sh &&./mysql_config.sh &&./php_install.sh &&./php_config.sh &&./lamp_config.sh
[root@real1 bin]# cd
[root@real1 ~]# netstat -utpln |grep 80
tcp        0      0 :::80                       :::*                        LISTEN      50971/httpd         
[root@real1 ~]# netstat -utpln |grep 3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      6693/mysqld
[root@real1 ~]# rm -rf /usr/local/httpd/htdocs/index.html
[root@real1 ~]# vi /usr/local/httpd/htdocs/index.php
".$_SESSION['time'].""."
"; echo " "."".$_SERVER['SERVER_ADDR'].""."
"; echo " "."".$_SERVER['SERVER_NAME'].""."
"; echo "SESSIONNAME "."".session_name().""."
"; echo "SESSIONID "."".session_id().""."
"; ?>

클 라 이언 트 액세스 테스트:
『 61656 』 real2. linuxfan. cn 노드 의 lamp 서 비 스 를 배치 합 니 다.
[root@real2 ~]# ls
lamp_install_publis-app-2015-07-16.tar.xz
[root@real2 ~]# tar Jxvf lamp_install_publis-app-2015-07-16.tar.xz
[root@real2 ~]# cd bin/
[root@real2 bin]#./apache_install.sh &&./mysql_install.sh &&./mysql_config.sh &&./php_install.sh &&./php_config.sh &&./lamp_config.sh
[root@real2 bin]# cd
[root@real2 ~]# netstat -utpln |grep 80
tcp        0      0 :::80                       :::*                        LISTEN      50971/httpd         
[root@real2 ~]# netstat -utpln |grep 3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      6693/mysqld
[root@real2 ~]# rm -rf /usr/local/httpd/htdocs/index.html
[root@real2 ~]# vi /usr/local/httpd/htdocs/index.php
".$_SESSION['time'].""."
"; echo " "."".$_SERVER['SERVER_ADDR'].""."
"; echo " "."".$_SERVER['SERVER_NAME'].""."
"; echo "SESSIONNAME "."".session_name().""."
"; echo "SESSIONID "."".session_id().""."
"; ?>

클 라 이언 트 액세스 테스트:
『 61656 』 www. linuxfan. cn 노드 의 nginx 서 비 스 를 설치 합 니 다.
[root@www ~]# hostnamectl set-hostname www.linuxfan.cn
[root@www ~]# hostname
www.linuxfan.cn
[root@www ~]# yum -y install pcre-devel zlib-devel
[root@www ~]# useradd -M -s /sbin/nologin nginx
[root@www ~]# tar zxvf nginx-1.12.2.tar.gz -C /usr/src/
[root@www ~]# cd /usr/src/nginx-1.12.2/
[root@www nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[root@www nginx-1.12.2]# make && make install
[root@www nginx-1.12.2]# cd
[root@www ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@www ~]# vi  /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginxapi
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=kill -s HUP $(cat /usr/local/nginx/logs/nginx.pid)
ExecStop=kill -s QUIT $(cat /usr/local/nginx/logs/nginx.pid)
PrivateTmp=Flase

[Install]
WantedBy=multi-user.target
[root@www ~]# systemctl start nginx
[root@www ~]# systemctl enable nginx
[root@www ~]# netstat -utpln |grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3538/nginx: master

클 라 이언 트 액세스 테스트:
직경 61656. nginx 노드 의 역방향 대리 서 비 스 를 설정 합 니 다.
[root@www ~]# vi /usr/local/nginx/conf/nginx.conf
     34 upstream lamp_server {                  ## http   ,server   
     35         server 192.168.100.150:80 weight=1;
     36         server 192.168.100.151:80 weight=1;
     37      }
     47         location / {
     48             root   html;
     49             index  index.html index.htm;
     50         }
     51         location ~ \.(asp|aspx|php|jsp|do)$ {           ## server     
     52             proxy_pass      http://lamp_server;
     53         }
[root@www ~]# systemctl stop nginx
[root@www ~]# systemctl start nginx

『 61656 』 클 라 이언 트 가 테스트 프 록 시 클 라 이언 트 를 방문 합 니 다.클 라 이언 트 액세스 테스트 html 사이트: 클 라 이언 트 액세스 테스트 php 사이트:
『 61656 』 로그 분석 접근 상황 보기;
[root@www ~]# tail -3 /usr/local/nginx/logs/access.log 
192.168.100.1 - - [16/Jul/2018:17:01:34 +0800] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"
192.168.100.1 - - [16/Jul/2018:17:02:02 +0800] "GET /index.php HTTP/1.1" 200 797 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"
192.168.100.1 - - [16/Jul/2018:17:02:11 +0800] "GET /index.php HTTP/1.1" 200 797 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"

[root@real1 ~]# tail -3 /usr/local/httpd/logs/access_log 
192.168.100.102 - - [16/Jul/2018:17:07:55 +0800] "GET /index.php HTTP/1.0" 200 797
192.168.100.102 - - [16/Jul/2018:17:07:56 +0800] "GET /index.php HTTP/1.0" 200 797
192.168.100.102 - - [16/Jul/2018:17:09:03 +0800] "GET /index.php HTTP/1.0" 200 797

[root@real2 ~]# tail -3 /usr/local/httpd/logs/access_log 
192.168.100.102 - - [16/Jul/2018:17:07:56 +0800] "GET /index.php HTTP/1.0" 200 797
192.168.100.102 - - [16/Jul/2018:17:07:56 +0800] "GET /index.php HTTP/1.0" 200 797
192.168.100.102 - - [16/Jul/2018:17:09:12 +0800] "GET /index.php HTTP/1.0" 200 797

좋은 웹페이지 즐겨찾기