Nginx 의 구덩이 밟 기 일기
최근 엔 엔 엔 진 스에 전면 배치 되 는 앞 뒤 분리 프로젝트 가 있 는데, 접 촉 했 던 웹 서버 는 ibm 의 ws, 웹 로직 등 이 있 기 때문에 아직 생산 과정 에서 Nginx 를 사용 하여 웹 서버 를 만 든 적 이 없 기 때문에 많은 구 덩이 를 밟 았 습 니 다. 이 를 통 해 여생 을 Nginx 에서 구 덩이 를 밟 지 않 았 으 면 좋 겠 습 니 다 ~
Nginx 설치
Nginx 의 설치 에 구덩이 가 있 습 니 다. 그것 은 바로 최신 안정 판 을 설치 하 는 것 이 좋 습 니 다. 낮은 버 전의 구덩이 아버지 때문에 처음에 우 리 는 낮은 버 전 을 설치 한 다음 에 HTTPS (아 리 클 라 우 드 가 제공 하 는 ssl 설정 에 따라 설정 이 잘못 되 었 을 확률 이 크 지 않 습 니 다) 를 설 치 했 습 니 다. 그러나 HTTPS 를 방문 하지 못 했 습 니 다. 그 후에 최신 안정 버 전 을 오랫동안 바 꾼 후에 설정 이 성공 적 으로 되 었 습 니 다.설치 과정 은 다음 과 같 습 니 다.
1. PCRE 의존 설치
yum install -y pcre pcre-devel
2. Zlib 설치 의존
yum install -y zlib zlib-devel
3. c + + 설치 의존
yum install -y gcc-c++
4. ssl 의존 설치 (SSL 인증 서 를 설정 할 필요 가 있다 면)
yum install -y openssl openssl-devel
5. Nginx 다운로드 (최신 안정 버 전 을 다운로드 하 는 것 이 좋 습 니 다)
wget -c https://nginx.org/download/nginx-1.10.2.tar.gz
6. 압축 을 풀 고 기본 설정 사용
tar -zvxf nginx-1.10.2.tar.gz
cd nginx-1.10.2.tar.gz
./configure
7. 컴 파일 및 설치
make
make install
8. 설 치 된 경 로 를 보고 시작 합 니 다.
whereis nginx
nginx -t // ,
nginx -c /etc/nginx/nginx.conf //
참고 문장
Nginx 의 역방향 에이전트
1. Nginx 의 역방향 에이전트
장면 과 결합 하여 제 가 지금 * * / api * * 의 모든 요청 을 백 엔 드 인터페이스 (eg: www. my domain. com / api / xxxx 를 www. my domain. com: 8080 / xxxx) 로 전송 하려 면 설정 파일 에 설정 해 야 합 니 다.
location /api/ {
proxy_pass http://www.mydomain.com:8080/;
}
여기 서 주의해 야 할 부분 이 있 습 니 다. Nginx 의 설정 은 위 에서 아래로 입 니 다. 즉, 만약 당신 이 이전에 아래 와 같이 설정 했다 면.
location / {
root /www/resource/;
index index.html index.htm;
}
location /api/ {
proxy_pass http://www.mydomain.com:8080/;
}
이 모양 은 유효 하지 않 습 니 다. * * / api / 의 일치 규칙 을 만족 시 키 는 것 도 만족 / * 의 일치 규칙 이 고 Nginx 는 위 에서 아래로 설정 되 어 있 기 때문에 모두 대리 로 / 일치 규칙 에 전송 되 었 습 니 다.
더 많은 역방향 에이전트 규칙 은 다음 과 같 습 니 다.
location = / {
# / ,
}
location / {
# / ,
#
}
location /documents/ {
# /documents/ , ,
# ,
}
location ~ /documents/Abc {
# /documents/ , ,
# ,
}
location ^~ /images/ {
# /images/ , , , 。
}
location ~* \.(gif|jpg|jpeg)$ {
# gif,jpg jpeg
# , /images/ config D , ^~
}
location /images/ {
# /images/, , ^~
}
location /images/abc {
# /images/abc, , ^~
# F G
}
location ~ /images/abc/ {
# config D : config G , , ,
}
2. Nginx 매개 변수 가 져 오기
장면 과 결합 하여 제 가 지금 / api 에서 요청 한 파 라 메 터 를 가 져 온 다음 에 퍼 가기 (eg: www. my domain. com / api? img = htt..) 를 하려 면 다음 과 같이 설정 을 수정 해 야 합 니 다.
location /api/ {
proxy_pass $arg_img; # $arg_ :
}
여기에 작은 구덩이 가 있 습 니 다. 도 메 인 이 다 르 면 설정 파일 에 써 야 합 니 다.
server {
listen 80;
resovler 8.8.8.8;
}
resovler 는 Nginx 가 ip 를 분석 하고 대리 방문 을 하 는 것 과 같 습 니 다. resovler 8.8.8 을 설정 하지 않 으 면 Nginx 는 502 를 보고 합 니 다.
3. Nginx 설정 쿠키
장면 과 결합 하여 제 가 지금 / api 에서 요청 한 파 라 메 터 를 가 져 오고 Cookie 에 설정 하고 싶다 고 가정 합 니 다 (eg. www. my domain. com / api? cookie =..)
location /api/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
add_header 'Set-Cookie' 'mycookie=$arg_cookie';
add_header 'domain' '.mydomain.com';
proxy_pass https://www.mydomain.com/;
}
앞의 두 매개 변 수 는 사용자 가 방문 하 는 IP 를 설정 하고 Cookie 를 설정 합 니 다. 그 중에서 문제 가 있 습 니 다. 배경 에 있 는 Set - Cookie 를 사용 하면 브 라 우 저 는 Cookie 를 저장 하지 않 습 니 다. 도 메 인 에 따라 브 라 우 저 는 이 Cookie 를 버 립 니 다. 자바 로 Set - Cookie 를 쓰 면
Cookie cookie = new Cookie("cookie","cookie");
cookie.setPath("/");
cookie.setDomain(".domain.com");
request.addCookie(cookie);
도 메 인 과 도 메 인 이름 (. my domain. com 은 도 메 인, www, my domain. com 은 도 메 인 이름) 을 설정 해 야 합 니 다. 도 메 인 이름 은 DNS 로 IP 로 해석 할 수 있 습 니 다.
그래서 Nginx 가 쿠키 를 다시 설정 할 때 주의해 야 합 니 다.
add_header 'domain' 'xxxx';
4. Nginx 의 부하 균형
Nginx 의 또 다른 유명한 용 도 는 부하 균형 이다. 그 중에서 부하 균형 전략 은 6 가지 가 있다. 가중치 (weight), iphash (ip 분배 방식 에 따라), leastconn (최소 연결 수), fair (응답 시간 에 따라), urlhash (URL 에 따라 분배).다음은 가중치 의 부하 균형 전략 설정 을 예 로 들 면:
// https://www.mydomain.com:8090 https://www.mydomain.com:8091
upstream tomcat_pool
{
server https://www.mydomain.com:8090 weight=4 max_fails=2 fail_timeout=30s;
server https://www.mydomain.com:8091 weight=4 max_fails=2 fail_timeout=30s;
}
그 중에서 weight 는 가중치, 가중치 가 큰 사람 을 대표 하고 배정 되 는 기회 가 비교적 크다. maxfails 는 최대 실패 횟수 를 말 합 니 다. 실패 횟수 에 도달 하면 이 노드 는 사용 할 수 없 음 으로 표 시 됩 니 다. fail 을 기다 리 십시오.timeout 시간 주기 도착, 다시 요청 ~
Nginx 최적화
1.worker_processes
Nginx 의 프로 세 스 수 workerprocesses, CPU 의 숫자 에 따라 쓰 면 일반적으로 CPU 의 배수 입 니 다.
2. I / O 모델
Nginx 의 I / O 모델 을 설정 하고 Linux 2.6 버 전에 이 어 epoll 을 지원 합 니 다.시스템 이 epoll 을 지원 하지 않 으 면 Nginx 는 기본적으로 Select 나 Poll 의 I / O 모델 을 선택 합 니 다. window 가 Select 모델 인 것 같 습 니 다.
events{
use epoll;
}
3.worker_rlimit_nofile
worker_rlimit_nofile 은 일반적으로 시스템 의 파일 조작 수 와 같 습 니 다 (ulimit - n).최적화 시스템 의 파일 조작 수 를 어떻게 얻 는 지 확대 하 다.
우선 프로 세 스 의 가장 큰 파일 핸들 을 수정 합 니 다.
ulimit -n 1048576
단일 프로 세 스 가 할당 할 수 있 는 최대 파일 수 를 수정 합 니 다.
echo 2097152 > /proc/sys/fs/nr_open
프로필 / etc / security / limits. conf 에 쓰기
* soft nofile 1048576
* hard nofile 1048576
* soft nproc unlimited
root soft nproc unlimited
마지막 으로 오래된 서 류 를 지 워 라.
rm -rf /etc/security/limits.d/*
그리고 / etc / sysctl. conf 파일 을 수정 합 니 다.
fs.nr_open=2097152
fs.file-max = 1048576
fs.nr_open 은 하나의 프로 세 스 가 할당 할 수 있 는 최대 파일 작업 수 를 말 합 니 다. file - max 는 가장 큰 파일 핸들 을 말 하 며 설정 파일 을 유효 하 게 합 니 다.
systcl -p
4.worker_connections
Nginx 의 최대 연결 수, 이론 적 으로 Nginx 의 프로 세 스 수 workerprocesses * Ngin 의 최대 연결 수 workerconnections;
worker_connections 102400;
5.keepalive_timeout
keepalive 의 시간 초과.
keepalive_timeout 60;
다음으로 전송:https://juejin.im/post/5c94a25a5188252d5f0fda4c
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.