2019 - 02 - 13 노트 - Nginx 기능 설정 (리 버스 에이전트, SSL)

5880 단어 linux 학습 노트
역방향 에이전트
리 버스 프 록 시 (Reverse Proxy) 는 프 록 시 서버 로 퍼 블 릭 네트워크 의 연결 요청 을 받 은 후 내부 네트워크 에 있 는 서버 에 전송 요청 을 하고 서버 에서 얻 은 결 과 를 퍼 블 릭 네트워크 에서 연결 을 요청 한 클 라 이언 트 에 게 되 돌려 주 는 것 을 말한다.
필드 사용
  • 공중 망 이 없 는 내부 망 기계 방문
  • 두 기계 간 통신 에 장애 가 있 는 문 제 를 해결 하 다
  • 프로필 추가 설정
    location /
        {
            proxy_pass http://ip;   #         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;
        }
    

    실험 설정:
  • 두 대의 기계 A 와 B 가 있 는데 그 중에서 A 는 내부 망 만 있 고 B 는 내부 망 과 외부 망 이 있 는 환경
  • 이 있다.
  • A 의 인터넷 IP 는 192.168.8.5.129
  • 이다.
  • B 의 내부 망 IP 는 192.168.8.132 이 고 외부 망 IP 는 192.168.48.132
  • 이다.
  • C 는 클 라 이언 트 이 고 C 는 B 의 외부 네트워크 IP 만 방문 할 수 있 으 며 A 또는 B 의 내부 네트워크 IP
  • 를 방문 할 수 없다.
    최종 적 으로 실현 해 야 할 목적: C 는 A 기계 내부 네트워크 의 사 이 트 를 방문 해 야 한다.
    네트워크 카드 추가: B 가상 컴퓨터 에서 네트워크 카드 장치 파일 을 추가 한 후 dhclient 명령 을 실행 하여 두 번 째 네트워크 카드 의 IP 주 소 를 가 져 옵 니 다. 네트워크 카드 설정 파일 ifcfg - ens 33 에서 ifcfg - ens 38 까지 복사 하여 설정 을 수정 합 니 다.
  • dns 설정 삭제
  • 게 이 트 웨 이 설정 삭제
  • 네트워크 카드 이름 수정
  • IP 주소 수정
  • [root@dxg ~]# cd /etc/yum.repos.d/
    [root@dxg yum.repos.d]# vi nginx.repo 
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1
    
    [root@dxg yum.repos.d]# yum install -y nginx
    [root@dxg yum.repos.d]# cd /etc/nginx/conf.d/
    [root@dxg conf.d]# vi default.conf
    deny all;   #    
    
    [root@dxg conf.d]# vi bbs.aibenwoniu.xyz.conf
    server
    {
    
            listen 80;
            server_name bbs.aibenwoniu.xyz;
    
    location /
        {
            proxy_pass http://192.168.85.129;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
    
    [root@dxg conf.d]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    [root@dxg conf.d]# nginx -s reload
    [root@dxg conf.d]# firewall-cmd --add-port=80/tcp --permanent #           ,       
    [root@dxg conf.d]# firewall-cmd --reload
    
    
    

    액세스 인증
    [root@dxg conf.d]# vi /etc/hosts
    192.168.48.132	bbs.aibenwoniu.xyz
    
    [root@dxg conf.d]# curl -I bbs.aibenwoniu.xyz
    HTTP/1.1 200 OK
    Server: nginx/1.14.2
    Date: Mon, 11 Feb 2019 06:52:07 GMT
    Content-Type: text/html; charset=utf-8
    Connection: keep-alive
    X-Powered-By: PHP/7.3.1
    

    nginx 부하 균형
    부하 균형 은 전단 의 요 구 를 백 엔 드 의 각 기계 에 균형 있 게 나 누 어 주 는 것 이다.
    [root@dxg conf.d]# vi qq.com.conf 
     upstream qq.com
        {
    	ip_hash; 
    	server 111.161.64.48:80; 
    	server 180.163.26.39:80; 
        }
        server
        {
    	listen 80;
    	server_name www.qq.com;
    	location /
    	{
    	    proxy_pass http://qq.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;
    	}
        }
    

    검증 하 다.
    [root@dxg conf.d]# curl -x111.161.64.48:80 www.qq.com -I
    HTTP/1.1 200 OK
    Server: squid/3.5.24
    Date: Mon, 11 Feb 2019 09:07:35 GMT
    Content-Type: text/html; charset=GB2312
    Connection: keep-alive
    Vary: Accept-Encoding
    Vary: Accept-Encoding
    Expires: Mon, 11 Feb 2019 09:08:35 GMT
    Cache-Control: max-age=60
    Vary: Accept-Encoding
    Vary: Accept-Encoding
    X-Cache: MISS from shenzhen.qq.com
    

    ssl 설정
    Nginx 가 https (암호 화 된 http) 로 웹 사 이 트 를 방문 할 수 있 도록 ssl 을 설정 합 니 다. http 기본 값 은 80 포트 이 고 https 기본 값 은 443 포트 입 니 다.
  • 신청서
  • 생산: www. wosign. com (옥 통)
  • 무료: freessl. org
  • 시험 은 무료 freessl. org 를 사용 하여 인증 서 를 신청 하려 면 먼저 계 정 을 등록 한 다음 에 이전에 신청 한 도 메 인 이름 (aibenwoniu. xyz) 을 입력 하여 인증 서 를 만 듭 니 다. 알림 에 따라 dns 인증 정 보 를 dnspod 에 txt 형식의 기록 을 새로 만 듭 니 다. 검증 이 성공 하면 세 개의 파일 (ca / crt / key) 이 생 성 됩 니 다.
  • 인증서 프로필 만 들 기
  • [root@linux2019 nginx]# mkdir ssl
    [root@linux2019 nginx]# cd ssl/
    [root@linux2019 ssl]# vi ca
    [root@linux2019 ssl]# vi crt
    [root@linux2019 ssl]# vi key
    #                     
    
  • 가상 호스트 설정 파일 설정
  • [root@linux2019 conf.d]# vi bbs.aibenwoniu.xyz.conf 
    listen       443 ssl;
        server_name  bbs.aibenwoniu.xyz;
        ssl on;
        ssl_certificate /etc/nginx/ssl/bbs.crt;
        ssl_certificate_key /etc/nginx/ssl/bbs.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        
    [root@linux2019 conf.d]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    [root@linux2019 conf.d]# nginx -s reload
    [root@linux2019 conf.d]# firewall-cmd --add-port=443/tcp --permanent
    success
    [root@linux2019 conf.d]# firewall-cmd --reload
    success
    [root@linux2019 conf.d]# systemctl restart nginx
    
    

    검증 하 다.
    [root@linux2019 conf.d]# curl  -H "host:bbs.aibenwoniu.xyz" https://192.168.85.129/index.php
    curl: (60) Peer's Certificate issuer is not recognized.
    More details here: http://curl.haxx.se/docs/sslcerts.html
    
    curl performs SSL certificate verification by default, using a "bundle"
     of Certificate Authority (CA) public keys (CA certs). If the default
     bundle file isn't adequate, you can specify an alternate file
     using the --cacert option.
    If this HTTPS server uses a certificate signed by a CA represented in
     the bundle, the certificate verification probably failed due to a
     problem with the certificate (it might be expired, or the name might
     not match the domain name in the URL).
    If you'd like to turn off curl's verification of the certificate, use
     the -k (or --insecure) option.
     
    [root@linux2019 conf.d]# curl -k -H "host:bbs.aibenwoniu.xyz" https://192.168.85.129/index.php
    

    PS1: curl - k \ # curl 이 안전 하지 않 은 ssl 연결 을 사용 하고 데 이 터 를 전송 할 수 있 도록 합 니 다 (인증서 가 신뢰 되 지 않 음)
    PS2: SSL 관련 확장 학습 -https://github.com/aminglinux/nginx/tree/master/ssl

    좋은 웹페이지 즐겨찾기