ubuntu 설치 및 설정 Nginx
10298 단어 nginx
1. 기본 적 인 컴 파일 과 설치
1. 설치 의존 항목
sudo apt-get update
sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev libssl-dev libxslt1-dev libxml2-dev libgd2-xpm-dev libgeoip-dev libgoogle-perftools-dev libperl-dev libtool
sudo apt-get install openssl
2. 새 버 전 다운로드, 홈 페이지 에 다운로드 링크 복사
wget http://nginx.org/download/nginx-1.13.6.tar.gz
3. 스트레스 해소
tar -zxvf nginx-1.13.6.tar.gz
4. 컴 파일 설치
# :
cd nginx-1.13.6
# :
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-stream --with-mail=dynamic
# nginx:
sudo make
# nginx:
sudo make install
# nginx:
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
# :-c , ,nginx , -h 。
# nginx :
ps -ef|grep nginx
# ( /usr/local/bin $PATH , , nginx )
sudo ln -s /opt/dotnet/dotnet /usr/local/bin #( )
컴 파일 옵션 설명:
-- prefix = path 컴 파일 된 설치 위 치 를 지정 하지 않 으 면 기본 위치 / usr / local / nginx 디 렉 터 리 -- sbin - path = path 는 nginx 실행 스 크 립 트 의 위 치 를 설정 합 니 다. path 변수 에 설정 하면 bash 환경 에서 nginx 명령 을 임의로 사용 할 수 있 습 니 다. 기본 위치 prefix / sbin / nginx 이 prefix 는 설정 파일 에 설 정 된 경로 인 conf - path = path 설정 nginx 설정 파일 의 경로 입 니 다. 이 옵션 을 지정 하지 않 으 면 설정 파일 의 기본 경 로 는 prefix / conf / nginx. conf -- pid - path = path 설정 nginx. pid 파일 의 경로 입 니 다. 일반적으로 프로 세 스 가 실 행 될 때 프로 세 스 id 가 있 습 니 다.이 id 는 pid file 에 저 장 됩 니 다. 기본 pid file 의 배치 위 치 는 prefix / logs / nginx. pid -- error - log - path = path 입 니 다. 잘못된 로그 의 저장 경 로 를 설정 하지 않 으 면 기본 prefix / logs / error. log -- http - log - path = path 는 http 접근 로그 의 경 로 를 설정 합 니 다. 지정 하지 않 으 면,기본 prefix / logs / access. log -- user = name 에 기본 시작 프로 세 스 를 설정 한 사용자 입 니 다. 지정 하지 않 으 면 기본 nobody -- group = name 에 이 사용자 가 있 는 사용자 그룹 을 설정 합 니 다. 지정 하지 않 으 면 nobody -- with - http 입 니 다.ssl_module 은 NGINX 가 HTTPS 요청 을 지원 할 수 있 도록 HTTP SSL 모듈 을 엽 니 다.OPENSSL 을 설치 해 야 돼 요. --with-http_flv_module --with-http_stub_status_module "server status" 페이지 사용 하기 --without-http_gzip_module 에서 ngx 사용 하지 않 기http_gzip_module. 사용 하려 면 zlib 가 필요 합 니 다. --without-http_ssi_module 에서 ngx 사용 하지 않 기http_ssi_module --without-http_referer_module 에서 ngx 사용 하지 않 기http_referer_module --without-http_rewrite_module 에서 ngx 사용 하지 않 기http_rewrite_module. 사용 하려 면 PCRE 가 필요 합 니 다. --without-http_proxy_module 에서 ngx 사용 하지 않 기http_proxy_module --without-http_fastcgi_module 에서 ngx 사용 하지 않 기http_fastcgi_module --without-http_memcached_module 에서 ngx 사용 하지 않 기http_memcached_module --without-http_browser_module 에서 ngx 사용 하지 않 기http_browser_module --http - proxy - temp - path = PATH 는 http 프 록 시 임시 파일 로 경 로 를 설정 합 니 다. --http - fastcgi - temp - path = PATH 설정 경 로 를 http fastcgi 임시 파일 로 설정 합 니 다. --without - http 에서 HTTP server 사용 하지 않 기 --with - mail IMAP 4 / POP 3 / SMTP 프 록 시 모듈 사용 --with-mail_ssl_모듈 사용 ngxmail_ssl_module --with - openssl = DIR OpenSSL library sources 로 경 로 를 설정 합 니 다. --with - stream 은 4 층 프로 토 콜 의 퍼 가기, 대리 또는 부하 균형 등 을 실현 하 는 데 사용 된다.
2. ssl 의 관련 설정
1. 자신 이 생 성 한 인증 서 를 사용 합 니 다 (테스트 또는 암호 화 데이터 만 사용 하고 주류 브 라 우 저 에 의 해 지원 되 지 않 습 니 다)
# ( , ) RSA
sudo openssl genrsa -des3 -out testcert.key 1024
#
# , , ,email。
# common name, 。 https ( , CA ), , 。 csr CA
sudo openssl req -new -key testcert.key -out testcert.csr
# key
sudo openssl rsa -in testcert.key -out testcert_nopwd.key
# crt
sudo openssl x509 -req -days 365 -in testcert.csr -signkey testcert_nopwd.key -out testcert.crt
이후 testcertnopwd. key, testcert. csr, testcert. crt 파일 복사 /etc/ssl/certs 목록 아래
그리고 설정 nginx.conf 문건
컴 파일 에 설 정 된 경 로 는 / usr / local / nginx 이기 때문에 이 파일 은 / usr / local / nginx / conf 디 렉 터 리 에 있 습 니 다.변경 파일 을 열 고 http 모듈 에서 다음 과 같이 설정 합 니 다. ssl_certificate /etc/ssl/certs/testcert.crt; ssl_certificate_key /etc/ssl/certs/testcert.key;
구체 적 인 코드:
http {
include proxy.conf;
include mime.types;
default_type application/octet-stream;
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
server_tokens off;
sendfile on;
#tcp_nopush on;
keepalive_timeout 29;
client_body_timeout 10;
client_header_timeout 10;
send_timeout 10;
#gzip on;
# mvctest ,
upstream mvctest{
server localhost:5000;
}
server {
listen 80;
add_header Strict-Transport-Security max-age=15768000;
return 301 https://$host$request_uri;
}
server {
listen *:443 ssl;
server_name localhost;
ssl_certificate /etc/ssl/certs/testcert.crt;
ssl_certificate_key /etc/ssl/certs/testcert.key;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on; #ensure your cert is capable
ssl_stapling_verify on; #ensure your cert is capable
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
#Redirects all traffic
location / {
proxy_pass http://localhost:5000;
limit_req zone=one burst=10 nodelay;
limit_req_status 503;
}
}
}
위 에서 정의 한 영역 이름 은 one (zone = one) 이 고 분배 메모리 크기 는 10m (제한 영역의 저장 공간 이 다 소모 되면 후속 모든 요청 에 대해 서버 는 503 을 되 돌려 줍 니 다) 입 니 다. 같은 ip ($binary remote addr) 의 평균 처리 요청 주파 수 는 초당 5 회 (rate = 5r / s) 를 초과 할 수 없습니다.초당 5 회 를 초과 하지만 초과 한 요청 수량 이 10 (burst = 10) 보다 적 으 면 요청 이 지연 된다.초당 5 회 이상 요청 수가 10 을 초과 하면 클 라 이언 트 에 게 503 (limit req status 503) 을 즉시 되 돌려 줍 니 다.
2. 신청 증서 상용 무료 증서:https://letsencrypt.org/ 일반적으로 CSR 파일 (생 성 방식 이 같 거나 CA 의 요구 에 따라) 은 SSL 인증 기관 에 제출 해 야 하 는 것 입 니 다. 도 메 인 이나 조직 이 검증 을 통과 하면 인증 기관 은 두 개의 파일 을 발급 합 니 다. testcom. crt 와 testcom. ca - bundle 테스트com. key 는 Nginx 설정 과 test 에 사용 해 야 합 니 다.com.crt、test_com. ca - bundle 과 함께 사용 되 므 로 잘 보관 해 야 합 니 다.
# cat
cat test_com.crt test_com.ca-bundle > test_com.pem
마지막 으로 두 개의 파일 을 얻 었 습 니 다: testcom. key 와 testcom. pem, 위 치 를 통일 하기 위해 서 이 두 파일 을 모두 이동 할 수 있 습 니 다. /etc/ssl/private 디렉토리 /etc/ssl/cert 목록 그리고 nginx. conf 파일 을 수정 할 수 있 습 니 다. 다음 과 같 습 니 다.
server {
#...
ssl on;
ssl_certificate /etc/ssl/private/test_com.pem;
ssl_certificate_key /etc/ssl/private/test_com.key;
#...
}
자체 생 성 인증 서 를 사용 하 는 것 과 마찬가지 로 인증 기관 이 발급 한 인증서 로 재 교 체 될 뿐이다.
3. 디 피 헤 르 만 키 교환 이상 은 안전 하지 않 습 니 다. 기본 값 은 SHA - 1 형식 입 니 다. 현재 주류 방안 은 모두 SHA - 1 을 피해 야 합 니 다. 더 강 한 안전성 을 확보 하기 위해 디 피 헤 르 만 키 교환 을 사용 할 수 있 습 니 다. 먼저 / etc / ssl / certs 디 렉 터 리 에 들 어가 명령 sudo 를 실행 할 수 있 습 니 다. openssl dhparam - out dhparam. pem 4096 dhparam. pem 생 성
test@test-VirtualBox:/etc/ssl/certs$ sudo openssl dhparam -out dhparam.pem 4096
[sudo] test :
Generating DH parameters, 4096 bit long safe prime, generator 2
This is going to take a long time
# ... , ...
#
test@test-VirtualBox:~$ cd /etc/ssl/certs/
test@test-VirtualBox:/etc/ssl/certs$ ll dhparam.pem
-rw-r--r-- 1 root root 769 9 27 11:49 dhparam.pem
수정 하 다. nginx.conf 파일 ssl_dhparam /etc/ssl/certs/dhparam.pem; ... 하면 된다
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
3. 시동 관련
1. 상용 명령
# Nginx
/usr/local/nginx/sbin/nginx
./sbin/nginx
# Nginx
./sbin/nginx -s stop
./sbin/nginx -s quit
# -s Nginx 。
#Nginx
./sbin/nginx -s reload
#
./sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#-c configuration,
# Nginx
./sbin/nginx -v
#
./sbin/nginx -h
./sbin/nginx -?
2. 컴 파일 링 설 치 를 자동 으로 시작 하려 면 스스로 설정 해 야 자동 으로 시작 할 수 있 습 니 다.
# nginx , /lib/systemd/system/
vim /lib/systemd/system/nginx.service
내용 은 다음 과 같다.
[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target
파일 설명 [Unit] 부분 설명: 서비스 설명 After: 의존, 의존 하 는 서비스 가 시 작 된 후에 사용자 정의 서 비 스 를 시작 합 니 다.
[Service] 부분 Type = forking 은 백 엔 드 에서 실행 되 는 형식 입 니 다. ExecStart 는 서비스의 구체 적 인 실행 명령 (경로 에 따라 어 울 려 야 함) ExecReload 를 재 부팅 명령 (경로 에 따라 어 울 려 야 함) ExecStop 을 정지 명령 (경로 에 따라 어 울 려 야 함) 으로 합 니 다. PrivateTmp = True 는 서비스 에 독립 된 임시 공간 을 할당 합 니 다. 주의: 시작, 재 부팅, 정지 명령 은 모두 절대 경 로 를 사용 해 야 합 니 다.
[Install] 일부 서비스 설치 에 관 한 설정 은 다 중 사용자 로 설정 할 수 있 습 니 다.
# ,
systemctl enable nginx.service
# nginx
systemctl start nginx.service
#
systemctl enable nginx.service
#
systemctl disable nginx.service
#
systemctl status nginx.service
#
systemctl restart nginx.service
#
systemctl list-units --type=service
4. 발생 할 수 있 는 문제 nginx: [emerg] SSLCTX_use_PrivateKey_file ("/ etc / ssl / certs / testcert. key") failed (SSL: error: 0906406 D: PEM routines:... nginx 가 시 작 될 때 인증서 암 호 를 입력 해 야 합 니 다. 해결 방법 은 비밀 키 를 사용 하여 복호화 후의 key 를 생 성 할 수 있 습 니 다. 효 과 는 같 습 니 다. (ssh 와 연결 차이 가 많 지 않 습 니 다)비밀번호 재 부팅 면제 효과: openssl rsa - in testcert. key - out untestcert. key 다음 nginx 에서 새로운 untestcert. key 를 사용 하면 https 로 연결 할 수 있 습 니 다.
nginx: [emerg] zero size shared memory zone "oneip" 에서 이 오류 가 발생 한 것 은 모두 limit req zone 이 지정 되 지 않 았 을 때 limit req 명령 을 사 용 했 기 때 문 입 니 다 (또는 limit req 의 name 값 과 limit req zone 에서 정의 한 name 값 이 일치 하지 않 기 때 문 입 니 다).
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.