Nginx: 도 메 인 이름 전송 (CentOS 7)

배경 요구 사항
docker 를 사용 하여 응용 시스템 을 구축 합 니 다. 응용 시스템 이 증가 하 는 상황 에서 많은 IP / 도 메 인 이름과 포트, 특히 포트 번 호 를 기억 하기 어렵 습 니 다.포트 번호 가 없 는 도 메 인 이름 을 통 해 서로 다른 주소 의 포트 에 접근 하 는 서비스 가 필요 합 니 다.예 를 들 면:
a.zombie.com => 192.168.1.2:81
b.zombie.com => 192.168.1.2:82
c.zombie.com => 192.168.1.3:81

레 퍼 런 스
  • nginx 역방향 대 리 를 구축 하여 내부 네트워크 도 메 인 이름 전송
  • centos 에 nginx 를 설치 하고 도 메 인 이름 전송 설정
  • nginx 역방향 대 리 를 구축 하여 내부 네트워크 도 메 인 이름 퍼 가기 (추천)
  • [대형 사이트 기술 실천] 초급 편: Nginx 를 빌려 역방향 프 록 시 서버 구축
  • 환경.
    테스트 환경:
    [root@localhost ~]# uname -r
    3.10.0-229.el7.x86_64
    [root@localhost ~]# cat /etc/redhat-release 
    CentOS Linux release 7.1.1503
    [root@localhost ~]# 

    환경 의존: 1. 네트워크 도 메 인 네 임 서버: 서버 를 설정 하 는 도 메 인 네 임 (또는 네트워크 의 화 는 자신 이 구 매 한 도 메 인 네 임 을 사용 할 수 있 습 니 다) 2. 2 개의 웹 서비스 (뒤의 절차 에서 모두 다음 과 같은 설명): - ip1:port_1 - ip_1:port_2, 3. nginx 서버 1 개
    순서
    웹 서버 준비
    이것 은 더 이상 군말 하지 않 고 아파 치, Nginx, IIS 등 유형의 웹 서버 를 임의로 사용 할 수 있다.
    ip_1:port_1
    ip_2:port_2

    Nginx 설치
    설명: 테스트 할 때 docker 를 사용 하지 않 고 직접 사용 하 는 centos 7 가상 컴퓨터
  • 설치: yum install nginx
  • 시작: service nginx start
  • 테스트: 아래 와 같은 출력 을 보면 설치 에 성공 했다 는 뜻
  • nginx -v
    nginx version: nginx/1.6.3
  • 테스트: 방문 http://localhost 하면 첫 페이지 를 볼 수 있 습 니 다.

  • Nginx 설정
    파일 위치 설정
    Centos:/etc/nginx/nginx.conf

    로그 파일 위치
                   ,   /var/log/nginx/

    DNS 서버 설정 도 메 인
  • nginx 서버 의 ip 주 소 를 다음 과 같이 가정 합 니 다. 192.168.1.10
  • 2 개의 도 메 인 이름 이 모두 가리 키 는 방향 192.168.1.10 을 설정 합 니 다. 다음 도 메 인 이름, IP 대응 관계
  •                       =>    IP
    ip_1_port_1.zombie.com => 192.168.1.10
    ip_2_port_2.zombie.com => 192.168.1.10

    도 메 인 이름 전송 설정
  • 백업 기본 설정: mv / etc / nginx / nginx. conf / etc / nginx / nginx. conf. bak
  • 도 메 인 이름 퍼 가기 설정 추가: http {} 에 다음 내용 추가
  • server { listen 80; server_name [domain_name]; location / { proxy_pass [URL] }
        } 

    [domain name] 을 위 에 설 정 된 도 메 인 이름 으로, [URL] 을 실제 서버 주소 로 바 꿉 니 다.이 예제 에 http {} 에 다음 과 같은 내용 을 추가 합 니 다.
        server {
            listen       80;
            server_name  ip_1_port_1.zombie.com;
    
            location / {
                proxy_pass http://ip_1:port_1
            }
        } 
        server {
            listen       80;
            server_name  ip_2_port_2.zombie.com;
    
            location / {
                proxy_pass http://ip_2:port_2
            }
        }  
  • 설정 시 기본 80 포트 설정 (아래) 을 유지 합 니 다. 도 메 인 이름 전송 대신 기본 80 포트 에 접근 할 수 있 습 니 다.
  • server {
            listen       80 default_server;
            listen       [::]:80 default_server;
            server_name  _;
            root         /usr/share/nginx/html;
            # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf;
    
            location / {
            }
            error_page 404 /404.html;
                location = /40x.html {
            }
            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }     
      }

    테스트 검증
  • 이 컴퓨터 의 DNS 서버 를 네트워크 DNS 서버 주소 로 설정 합 니 다
  • 브 라 우 저 열기
  • 방문 http://ip_1_port_1.zombie.com 하면 페이지 의 내용 이 실제 http://ip_1:port_1 와 같다 는 것 을 볼 수 있다
  • 방문 http://ip_2_port_2.zombie.com 하면 페이지 의 내용 이 실제 http://ip_2:port_2 와 같다 는 것 을 볼 수 있다
  • 이로써 nginx 의 도 메 인 이름 퍼 가기 기능 실험 이 완료 되 었 습 니 다.
    프로 세 스 문제
  • 방문 할 때 다음 과 같은 문제 connect() to 127.0.0.1:8001 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8001/", host: "localhost:8080" 해결 방법: 참고http://stackoverflow.com/questions/23948527/13-permission-denied-while-connecting-to-upstreamnginx
  • 도 메 인 이름 리 트 윗 을 한 모든 사이트 에 방문 (모든 것 을 방문 해 야 합 니 다)
  • 집행 cat /var/log/audit/audit.log | grep nginx | grep denied
  • 집행 cat /var/log/audit/audit.log | grep nginx | grep denied
  • 집행 semodule -i mynginx.pp
  • 좋은 웹페이지 즐겨찾기