nginx 설정 요약
*********************************************************************************************************************************************
rhel 5. x 에서 상기 기능 실현
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- nginx-1.2.2.tar.gz /usr/src ,1.2.2
- #
- #yum -y groupinstall "Development Libraries" "Development Tools"
- #yum -y install pcre-devel
- #useradd -s /sbin/nologin nginx
- #cd /usr/src
- #tar xzvf nginx-1.2.2.tar.gz
- #cd /usr/src/nginx-1.2.2
- #./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid \
- --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module \
- --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module \
- --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy \
- --http-fastcgi-temp-path=/var/tmp/nginx/fcgi --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
- --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre
- #make && make install
nginx 에 SysV 서비스 시작 스 크 립 트 제공
- #vim /etc/init.d/nginx
- #!/bin/sh
- #
- # nginx - this script starts and stops the nginx daemon
- #
- # chkconfig: - 85 15
- # description: Nginx is an HTTP(S) server, HTTP(S) reverse \
- # proxy and IMAP/POP3 proxy server
- # processname: nginx
- # config: /usr/local/nginx/conf/nginx.conf
- # config: /etc/sysconfig/nginx
- # pidfile: /var/run/nginx.pid
-
- # Source function library.
- . /etc/rc.d/init.d/functions
-
- # Source networking configuration.
- . /etc/sysconfig/network
-
- # Check that networking is up.
- [ "$NETWORKING" = "no" ] && exit 0
-
- nginx="/usr/local/nginx/sbin/nginx"
- prog=$(basename $nginx)
-
- NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
-
- [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
-
- lockfile=/var/lock/subsys/nginx
-
- make_dirs() {
- # make required directories
- user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
- options=`$nginx -V 2>&1 | grep 'configure arguments:'`
- for opt in $options; do
- if [ `echo $opt | grep '.*-temp-path'` ]; then
- value=`echo $opt | cut -d "=" -f 2`
- if [ ! -d "$value" ]; then
- # echo "creating" $value
- mkdir -p $value && chown -R $user $value
- fi
- fi
- done
- }
-
- start() {
- [ -x $nginx ] || exit 5
- [ -f $NGINX_CONF_FILE ] || exit 6
- make_dirs
- echo -n $"Starting $prog: "
- daemon $nginx -c $NGINX_CONF_FILE
- retval=$?
- echo
- [ $retval -eq 0 ] && touch $lockfile
- return $retval
- }
-
- stop() {
- echo -n $"Stopping $prog: "
- killproc $prog -TERM
- retval=$?
- echo
- [ $retval -eq 0 ] && rm -f $lockfile
- return $retval
- }
-
- restart() {
- configtest || return $?
- stop
- sleep 1
- start
- }
-
- reload() {
- configtest || return $?
- echo -n $"Reloading $prog: "
- killproc $nginx -HUP
- RETVAL=$?
- echo
- }
-
- force_reload() {
- restart
- }
-
- configtest() {
- $nginx -t -c $NGINX_CONF_FILE
- }
-
- rh_status() {
- status $prog
- }
-
- rh_status_q() {
- rh_status >/dev/null 2>&1
- }
-
- case "$1" in
- start)
- rh_status_q && exit 0
- $1
- ;;
- stop)
- rh_status_q || exit 0
- $1
- ;;
- restart|configtest)
- $1
- ;;
- reload)
- rh_status_q || exit 7
- $1
- ;;
- force-reload)
- force_reload
- ;;
- status)
- rh_status
- ;;
- condrestart|try-restart)
- rh_status_q || exit 0
- ;;
- *)
- echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
- exit 2
- esac
-
- #chmod a+x /etc/init.d/nginx
- #chkconfig --add nginx
- #chkconfig nginx on
- #service nginx start
가상 호스트 설정
- #vim /usr/local/nginx/conf/nginx.conf
- .....
- server {
- listen 80; #
- server_name www.andy.com; #
- index index.html index.htm; #
- root /www; #
- }
- server {
- ........
- .......
- }
- .......
만약 에 이 서버 의 가상 호스트 가 많다 면 위의 설정 방법 이 관리 하기 쉽 지 않 은 것 이 분명 합 니 다. 우 리 는 가상 호스트 의 설정 파일 을 넣 을 디 렉 터 리 를 지정 할 수 있 습 니 다. 모든 가상 호스트 는 하나의 설정 파일 을 단독으로 사용 하면 관리 하기에 도 훨씬 편리 합 니 다. 설정 은 다음 과 같 습 니 다.
- #vim /usr/local/nginx/conf/nginx.conf
- .....
- .....
- include conf/vhost/*.conf;
-
- #mkdir /usr/local/nginx/conf/vhost
- #vim /usr/local/nginx/conf/vhost/www.conf
- server {
- listen 80; #
- server_name www.andy.com; #
- index index.html index.htm; #
- root /www; #
- }
사용자 인증
- # htpasswd
- #htpasswd -cd /usr/local/nginx/conf/.auth andy
- #htpasswd -d /usr/local/nginx/conf/.auth andy_f
- #vim /usr/local/nginx/conf/vhost/www.conf
- server {
- listen 80;
- server_name www.andy.com;
- index index.html index.htm;
- root /www;
- location / {
- auth_basic "test";
- auth_basic_user_file /usr/local/nginx/conf/.auth;
- }
-
- #service nginx restart
4, HTTPS 자체 발급 인증서 사용
- # https
- #mkdir -pv /usr/local/nginx/conf/.sslkey
- #
- #cd /usr/local/nginx/conf/.sslkey
- #openssl genrsa -out https.key 1024
- # , , Common Name FQDN
- #openssl req -new -x509 -key https.key -out https.crt
- # , 400
- #chmod -R 400 /usr/local/nginx/conf/.sslkey
-
- #vim /usr/local/nginx/conf/vhost/www.conf
- server {
- listen 443;
- server_name www.andy.com;
- index index.html index.htm;
- root /www;
- ssl on;
- ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
- ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
- ssl_certificate /usr/local/nginx/conf/.sslkey/https.crt;
- ssl_certificate_key /usr/local/nginx/conf/.sslkey/https.key;
- ssl_session_cache shared:SSL:10m;
- ssl_session_timeout 10m;
- }
-
- # nginx
- #service nginx restart
5. 역방향 대리 캐 시 메커니즘 이 있 는 역방향 에이전트
- #vim /usr/local/nginx/conf/nginx/conf
- .......
- .......
- http {
- ......
-
- proxy_cache_path /var/www/cache levels=1:2 keys_zone=mycache:20m max_size=2048m inactive=60m;
- proxy_temp_path /www/cache/tmp;
- ......
- server {
- listen 80;
- server_name www.andy.com;
- location / {
- proxy_pass http://127.0.0.1/;
- proxy_cache mycache;
- proxy_cache_valid 200 302 60m;
- proxy_cache_valid 404 1m;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- }
- }
- }
- # nginx
- #service nginx restart
6. 부하 균형 nginx 에서 부하 균형 을 실현 하 는 것 도 역방향 대 리 를 사용 하 는 메커니즘 입 니 다. 그러면 nginx 에서 기본적으로 지원 하 는 스케줄 링 알고리즘 은 세 가지 가 있 습 니 다. 폴 링, 가중 폴 링, iphash, 부하 균형 이 무엇 인지 설명 할 필요 가 없 죠? 다음은 nginx 의 부하 균형 을 설정 합 니 다.
- #vim /usr/local/nginx/conf/nginx.conf
- user nginx;
- worker_processes 10;
- error_log logs/error.log crit;
- pid logs/nginx.pid;
- events
- {
- use epoll;
- worker_connections 51000;
- }
- http {
- include mime.types;
- default_type application/octet-stream;
- keepalive_timeout 60;
- tcp_nodelay on;
- # bbs.andy.com
- upstream bbs.andy.com {
- server 172.16.0.2:80; #
- server 172.16.0.3:80;
- server 172.16.0.4:80 weight=5;
- server 172.16.0.5:8080 backup; ,
- ip_hash; #
- }
- server {
- listen 80;
- server_name bbs.andy.com;
- index index.html index.htm index.php;
- location / {
- proxy_pass http://bbs.andy.com; # ,
- # 502 504 nginx , ,nginx , ,
- proxy_next_upstream http_502 http_504 error timeout invalid_header;
- 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_connect_timeout 600;
- proxy_read_timeout 600;
- proxy_send_timeout 600;
- proxy_buffer_size 8k;
- proxy_temp_file_write_size 64k;
- }
-
-
- access_log logs/bbs.log;
-
- }
- }
7. URL 재 작성 url 재 작성 이란 특정한 경 로 를 다른 경로 로 다시 찾 는 것 입 니 다. 찾기 와 바 꾸 는 차이 가 많 지 않 습 니 다. 형식 은 다음 과 같 습 니 다. rewrite regex replacement [flag]; nginx 에서 url 재 작성 처리 체 제 는 다음 과 같은 4 가지 가 있 습 니 다. last 일치 하 는 url 을 다시 일치 시 킵 니 다. break 가 일치 하 는 url 은 일치 하지 않 습 니 다. redirect 임시 방향 변경 permanent 영구 재 설정 1. 예 를 들 어 특정한 사이트 에 방문 하 는 경 로 는 / forum / 이 때 / bbs 를 사용 하여 이 사 이 트 를 방문 하려 면 url 재 작성 을 해 야 합 니 다. 다음 과 같 습 니 다.
- location / {
- rewrite ^/forum/?$ /bbs/ permanent;
- }
2. 예 를 들 어 특정한 사이트 에 그림 서버 (10.0.0.1 / p w picpaths /) 가 있 는데 이때 특정한 사이트 에 방문 합 니 다 / pw_picpaths / 자원 시 이미지 서버 에 접근 하고 싶 은 자원
- location / {
- rewrite ^/p_w_picpaths/(.*\.jpg)$ /p_w_picpaths2/$1 break;
- }
3, 도 메 인 이름 이동
- server
- {
- listen 80;
- server_name andy.com;
- rewrite ^/ http://www.andy.com/;
- }
4, 도 메 인 이름 미 러
- server
- {
- listen 80;
- server_name andy.com;
- rewrite ^/(.*)$ http://www.andy.com/$1 last;
- }
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * if 판단 문, 문법 if (조건) {.....} 응용 환경 server 도 지원 합 니 다. ,location if 판단 조건 은 다음 과 같다. 1. 변수 명;false values are: empty string (", or any string starting with" 0 ";) 2. 변수 에 대한 비교 표현 식 은 = 또는! = 을 사용 할 수 있 습 니 다.테스트 진행 하기;3. 정규 표현 식 의 패턴 일치: ~ 크기 구분 패턴 일치 ~* 알파벳 대소 문자 구분 없 는 패턴 일치 !~ 와!위의 두 가지 테스트 에서 반 4 를 취하 고 파일 이 - f 또는! -f 5 、 테스트 디 렉 터 리 존재 여부 - d 또는! -d 6. 디 렉 터 리, 파일 또는 링크 파일 의 존재 성 - e 또는! -e 7 、 파일 의 실행 권한 검사 - x 또는! -x
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *http://wiki.nginx.org/HttpCoreModule#Variables 공식 문서 $argPARAMETER $args $binary_remote_addr $body_bytes_sent $content_length $content_type $cookie_COOKIE $document_root $document_uri $host $hostname $http_HEADER $sent_http_HEADER $is_args $limit_rate $nginx_version $query_string $remote_addr $remote_port $remote_user $request_filename $request_body $request_body_file $request_completion $request_method $request_uri $scheme $server_addr $server_name $server_port $server_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 도 난 방지 체인
- location ~* \.(gif|jpg|png|swf|flv)$ {
- valid_referers none blocked www.andy.com;
- if ($invalid_referer) {
- rewrite ^/ http://www.andy.com/403.html;
- }
6, 사용자 가 요청 한 페이지 가 존재 하지 않 으 면 사용자 정의 점프
- if (!-f $request_filename) {
- rewrite ^(/.*)$ http://www.andy.com permanent;
- }
7. 사용자 브 라 우 저의 유형 을 판단 하고 해당 하 는 점프 를 합 니 다.
- if ($http_user_agent ~* MSIE) {
- rewrite ^(.*)$ /msie/$1 break;
- }
OK, 완 공 했 습 니 다. 잠시 이렇게 많은 것 을 정리 하 였 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.