Nginx 에서 자주 사용 하 는 고전 설정 | 역방향 에이전트, HTTPS 리 셋, 포트 리 트 윗

3850 단어
2 급 디 렉 터 리 맵 은 현재 전후 단 항목 의 분리 장면 이 많아 진 후에 보통 전단 의 포트, 백 엔 드 의 포트 입 니 다.
전과 같다https://example.com/index.html호출 인터페이스https://example.com:4433
이러한 배 치 는 일부 작은 프로젝트 에 대해 약간의 번 거 로 움 을 피 할 수 없다. 물론 네트워크 환경 에서 도 하위 도 메 인 이름, 다른 도 메 인 이름 을 사용 하여 크로스 도 메 인 방문 을 할 수 있다.
같은 도 메 인 이름, 같은 포트 를 말 합 니 다. 앞 뒤 가 동시에 접근 서 비 스 를 할 수 있 도록 합 니 다.
전단 주소:https://example.com/index.html
인터페이스 주소:https://example.com/api/
테스트 에 통 과 된 역방향 프 록 시 방식 을 먼저 기록 합 니 다. 즉, 원래 의 server 설정 을 바 꾸 지 않 습 니 다.직접 역방향 에이 전 트 를 통 해 example. com / api 를 example. com: 4443 / 로 재 설정 합 니 다.
location ^~ /api/ {
    proxy_pass  https://example.com:4433/;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

특히 location 세그먼트 의 ^ ~ 는 특정한 문 자 를 시작 으로 일치 하 는 것 입 니 다. 여 기 는 / api / 를 시작 으로 URL 규칙 을 일치 시 키 는 것 입 니 다.
여 기 는 글 을 쓸 수 없습니다. 정규 가 일치 한 다 는 뜻 이기 때문에 정규 를 사용 하면 proxy 를 사용 할 수 없습니다.pass 세그먼트 에서 URI 를 설정 합 니 다. URI 란 4433 포트 뒤의 / 입 니 다.
만약 쓰 지 않 는 다 면, example. com / api / index. php 를 방문 할 때 example. com: 4433 / api / index. php 로 대 리 됩 니 다.백 엔 드 의 루트 경 로 를 찾 을 수 없 기 때문에 여 기 는 / 로 끝 납 니 다.
표준 HTTPS 포트 가 아 닌 표준 https 포트 로 방향 을 바 꾸 려 면 2083 이 HTTP 점프 HTTPS 접근 을 지원 하 는 경우 다음 설정 을 참조 하 십시오.
error_page 497 https://$host:2083$request_uri;

이렇게 설정 하지 않 으 면 기본적으로 사용자 가 사이트 프로 토 콜 을 확인 하지 않 을 때 HTTP 프로 토 콜 을 사용 하여 HTTPS 사 이 트 를 방문 하면 접근 할 수 없습니다.
오류 예: 일반 HTTP 요청 이 HTTPS 포트 로 전송 되 었 습 니 다.
HTTP 강제 이동 HTTPS 일상 은 방문객 의 안전성 을 확보 하기 위해 사이트 전체 가 HTTPS 접근 을 유지 하도록 해 야 합 니 다. 그러면 다음 설정 을 통 해 설정 할 수 있 습 니 다.
server {
    listen 80 default_server;
    server_name example.com;
    rewrite ^(.*) https://$server_name$1 permanent;
    #   rewrite     
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl;
    server_name example.com;
}

80 개의 감 청 된 HTTP 링크 를 모두 HTTPS 포트 로 재 설정 하 는 방법 입 니 다.
HSTS 정책 은 HTTPS 연결 을 유지 하 는 동시에 HSTS 정책 을 켜 서 방문 자 브 라 우 저 에 게 HTTPS 링크 를 사용 하도록 강제 할 수 있 습 니 다. 다음 코드 를 추가 할 수 있 습 니 다.
  • add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;preload" always;
  • max - age: 단위 시간 (초) 내 HTTPS 연결 강제 사용, 1 년
  • includeSubDomains: 선택 할 수 있 습 니 다. 사이트 의 모든 하위 도 메 인 이 동시에 유효 합 니 다
  • preload: 선택 가능, 비 규범 값, "HSTS 미리 불 러 오기 목록" 사용 정의
  • always: 모든 응답 이 이 응답 헤드 를 보 낼 수 있 도록 선택 할 수 있 습 니 다. 각종 내 장 된 오류 응답
  • 을 포함 합 니 다.
    Nginx 역방향 프 록 시 역방향 프 록 시 장면 이 많 습 니 다. 예 를 들 어 앞의 앞 뒤 끝 에 도 메 인 네 임 포트 를 통일 하 는 것, 예 를 들 어 부하 균형 등 입 니 다.
    location / {
        proxy_pass  http://example.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    

    전체 매개 변수 설정
    location / {
        proxy_pass  http://example.com;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
    }
     
    

    포트 리 트 윗 Nginx 포트 리 트 윗 성능 도 매우 강해 서 내부 네트워크 데이터 베이스, 다른 서비스 포트 가 노출 된 장면 에 사용 할 수 있다.
    예 를 들 어 내부 네트워크 의 192.168.1.2 MySQL 데이터베이스 포트 를 Nginx 가 있 는 서버 의 33062 포트 를 통 해 노출 한다.
    upstream TCP3306 {
        hash $remote_addr consistent;
        server 192.168.1.2:3306;
    }
    
    server {
        listen 33062;
        proxy_connect_timeout 5s;
        proxy_timeout 300s;
        proxy_pass TCP3306;
    }
    

    좋은 웹페이지 즐겨찾기