Nginx의 핵심 구성 예

Nginx의 핵심 구성 예

다른 IP, 다른 포트를 기반으로하고 달성 ngx_http_core_module 핵심 모듈에 따라 다른 가상 호스트 도메인 이름을 구현할 필요가 없습니다.

PC의 웹 사이트 만들기 (1)

root@z2:~# mkdir /apps/nginx/conf/conf.d
root@z2:~# vim /apps/nginx/conf/conf.d/pc.conf
root@z2:~# cat /apps/nginx/conf/conf.d/pc.conf 
server { 

	listen 80; 
	server_name www.mage.net; 
	location / {
	root /data/nginx/html/pc; 
	} 
}

root@z2:~# vim /apps/nginx/conf/nginx.conf
在http内添加 include /apps/nginx/conf/conf.d/*.conf;



root@z2:~# mkdir /data/nginx/html/pc -p
root@z2:~# echo "pc web" > /data/nginx/html/pc/index.html
root@z2:~# nginx -s reload

해결 호스트

192.168.1.102  www.mage.net

테스트

root@z2:~# curl www.mage.net
pc web

모바일 웹 사이트를 생성합니다 :

root@z2:~# cat  /apps/nginx/conf/conf.d/mobile.conf
server { 

	listen 80; 
	server_name mobile.mage.net; 
	
	location / { 
	root /data/nginx/html/mobile; 
	} 
}


root@z2:~# mkdir /data/nginx/html/mobile  -p
root@z2:~# echo "mobile web" >> /data/nginx/html/mobile/index.html

3. 与 루트 별칭

루트 : 지정 위치의 정의에서 웹의 홈 디렉토리, 파일의 절대 경로는 루트 + 위치에 동일한 경우

별명 : 별명과 유사한 아파치의 별명과 비슷한 역할, 파일 절대 경로 별칭 예

 server {

        listen 80;
        server_name www.mage.net;
        location / {
        root /data/nginx/html/pc; }

          location /about {
                root /data/nginx/html/pc;
        }
#    	location /about {
#                alias /data/nginx/html/pc;
#       }
}

의 pc.conf에 대한 액세스 경로를 추가합니다.

www.mage.net/about/ 시간을 액세스 할 때,

루트 쓰기의 경우 : 실제 방문이 /data/nginx/html/pc/about/index.html이다;

별명 문구 경우 : 실제 방문이 /data/nginx/html/pc/index.html이다;

상세 4. 위치하여

정규 표현식을 사용하지 않고 처음 URI와 일치하는 가장 높은 수준을 선택할 때, Nginx의 위치 서버 복수의 문자열이 URI는 사용자, 즉 다시 웹 파일의 경로 이름은 다음 위치 모듈을 사용하여 요청 정식 URL 문자열은 경기가 끝날 경우 검색이 요청을 처리하기 위해이 위치를 사용합니다.

语法规则:    location [=|~|~*|^~] /uri/ { … }

=   #用于标准uri前,需要请求字串与uri精确匹配,如果匹配成功就停止向下匹配并立即处理请求。
~   #用于标准uri前,表示包含正则表达式并且区分大小写 
~*  #用于标准uri前,表示包含正则表达式并且不区分大写 
!~  #用于标准uri前,表示包含正则表达式并且区分大小写不匹配 
!~* #用于标准uri前,表示包含正则表达式并且不区分大小写不匹配 
^~  #用于标准uri前,表示包含正则表达式并且匹配以什么开头 
$   #用于标准uri前,表示包含正则表达式并且匹配以什么结尾 
\   #用于标准uri前,表示包含正则表达式并且转义字符。可以转. * ?等 
*   #用于标准uri前,表示包含正则表达式并且代表任意长度的任意字符
4.1 케이스 일치 - 일치

요구 사항을 웹 서버 인터페이스 섹션의 사용 위치를 구성 : 서버에 액세스 할 때의 nginx / 로그인 지정된 HTML 파일의 내용을 표시합니다

server { 

	listen 80; 
	server_name www.mage.net; 
	
	location / {
	root /data/nginx/html/pc; }
	 

	location =/1.jpg { 
		root /var/www/nginx/images; 
		index index.html; }nginx

}

== 참고 : == 위치 = / 1.JPG 등호 간의 공간 "/"

은 / 데이터 / nginx를 / HTML / PC는 / var / www /에서의 nginx / 이미지 디렉토리하는 이름은 같지만 서로 다른 내용의 1.JPG 사진에 놓여있다

WWW를 방문합니다. 때 mage.net/1.jpg, 다음은 / var / www /에서의 nginx / 이미지 사진을 볼 수

4.2 매칭 케이스 - 대소 문자를

URI는 문자를 대문자 경우,이 상태는 그룹과 일치하지 않습니다

  location ~ /A.?\.jpg {
        index index.html;

        root  /var/www/nginx/images;
        }

단지 AX.jpg 사진 소문자 문자에 액세스 할 수 있습니다, 대문자 (당시 정규 표현식의 고정 부분을 구별하기 위해, 그리고 대소 문자 구분) JPG 이미지의 끝을 인식하지 못합니다.

4.3 케이스 매치 - 대소 문자를 구별하지
#使用正则表达式
location ~* /A.?\.jpg {
        index index.html;

        root  /var/www/nginx/images;
        }

당신은 AX.jpg, AX.JPG, AX.Jpg, 사진 등의 AX.jPg에 액세스 할 수 있습니다

#不使用正则表达式
# location ~ /aa.jpg {
# index index.html;
# root /opt/nginx/html/image;
# }

location ~* /aa.jpg {
	index index.html;
	root /opt/nginx/html/image;
}

소문자를 구분하지 위치를 들어, 이러한 경우에 민감한 당신이 대소 문자를 구분하지, 당신은 자원을 외부 aa.jpg 같은 Aa.JPG 만 액세스 aa.jpg에 액세스 할 수 있습니다, AA로, 어떤 경우를 이미지 파일의 끝 부분에 액세스 할 수 있습니다 .JPG 하이브리드 파일 이름

4.4 케이스 -URI 경기 시작
     	location ^~ /images {
                root /data/nginx;
                index index.html;
		}

#        location /images1 {
#        	alias /data/nginx/html/pc;
#        	index index.html;
#		}
root@z2:/data/nginx# echo "/data/nginx/images" >/data/nginx/images/index.html 
root@z2:/data/nginx# echo "/data/nginx/images1" >/data/nginx/images1/index.html 

어떤 의견이 오픈하기 전에, URI의 최고 수준이 시작 사용하지 않습니다. 이 효과는 이미지 및 이미지 1 복귀 다른 결과에 대한 액세스를 달성한다

root@z2:~# curl www.mage.net/images/
/data/nginx/images
root@z2:~# curl www.mage.net/images1/   
pc web  (注意此时的结果并不是/data/nginx/images1)

오프닝 코멘트를 후

root@z2:~# curl www.mage.net/images/
/data/nginx/images
root@z2:~# curl www.mage.net/images1/
/data/nginx/images1
4.5 일치하는 경우 - 파일 이름 접미사
		location ~* \.(gif|jpg|jpeg|bmp|png|tiff|tif|ico|wmf|js)$ {
    			root /data/img;
    			index index.html;
		}

     	location ^~ /images {
                root /data/nginx;
                index index.html;
		}

a와 / 데이터 / IMG / 이미지 1 디렉토리 / 데이터 /의 nginx / 이미지 1로 사진 1.JPG의 내용과 동일하지 않습니다 업로드

액세스 www.mage.net/images1/i.jpg는 액세스 / 데이터 / IMG / 이미지 1 디렉토리 사진입니다 발견

결론 : 파일의 끝이 파일의 시작 부분에서 우선 순위의 우선 순위보다 크다

우선 4.6 위치

일치 우선 순위 = ^ ~, ~ 나 ~ *, 부호 /의
LOCATION 우선 순위 : (위치 =)> (위치의 전체 경로)> (LOCATION ^ ~ 경로)> (LOCATION ~, ~ * 일반 순서)> (위치 경로 개시 부)> 부호 /

4.7 생산 사용 사례
直接匹配网站根会加速Nginx访问处理:
location = / {
......;
}
location / {
......;
}
静态资源配置:
location ^~ /static/ {
......;
}
# 或者
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
......;
}
多应用配置
location ~* /app1 {
......;
}
location ~* /app2 {
......;
}

네 개의 액세스 제어의 nginx 5.

액세스 제어 모듈 Ngx_http_access_module 기반 클라이언트는 소스 IP 주소에 매칭에 의해 제한 될 수있다.

location /about {
alias /data/nginx/html/pc;
index index.html;
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all; #先允许小部分,再拒绝大部分
}

6. Nginx의 계정 인증

htpasswd가 도구의 이름과 같은 사례 및 아파치 패키지 이름과 같은 동일하지만하지 않습니다

root@z2:~# apt install apache2-utils  -y

일반적으로 사용되는 명령을 HTPASSWD

  • 새 파일을 생성 -c
  • 암호 대신 프롬프트 암호를 사용하여 명령 줄에서 -b.
  • -m 암호 MD5 암호화 (기본값) 시행
root@z2:~# htpasswd -cbm /apps/nginx/conf/.htpasswd user1 123456
Adding password for user user1

root@z2:~# htpasswd -b /apps/nginx/conf/.htpasswd user2 123456
Adding password for user user2

프로필

location = /login/ {
	root /data/nginx/html/pc;
	index index.html;
	auth_basic "login password";
	auth_basic_user_file /apps/nginx/conf/.htpasswd;
	}
}

액세스 www.mage.net/login/에 필요한 암호를 입력

7. 사용자 지정 오류 페이지

	error_page 500 502 503 504 404 /error.html;
	
	location = /error.html {
    	root html;
	}

참고 : nginx를 설치하면 HTML 아직 여기 prefix_path 여기서 디렉토리를 기준으로 상대적으로 디렉토리이며, 적절한 설치가을 / etc / nginx를 / HTML /.

그럼 당신은 HTML에서 error.html을 만들 수 있습니다.

8. 사용자 정의 액세스 로그

root@z2:~# mkdir /data/nginx/logs

의 nginx 로그 정의와 관심은 쉽게 후 유지 보수에 한 번 서버 _를 유지

 		server_name www.mage.net;
        access_log /data/nginx/logs/www-mage-net_access.log;
        error_log /data/nginx/logs/www-mage-net_error.log;

파일이 (9)의 존재 여부를 감지.

모든 파일 경우 try_files 순서대로 파일이 존재하는지 여부를 확인하는 것입니다 (종료 슬래시가 폴더로 표시됩니다) 파일이나 폴더를 찾을 최초의 반환
또는 폴더를 찾을 수없는, 우리는 마지막에 내부 리디렉션을 실시한다 매개 변수. 마지막 매개 변수는 이전에 내부 리디렉션을 일으킬 수
내부 URI 만 포인트를 설정 매개 변수입니다. 마지막 파라미터는 달리 내부 오류 500 대체 URI이며 존재한다.

$ 열린 우리당은 후 물건을 포함하지 않는, 요청 된 파일 및 경로를 참조하는 "?"또는 "#", $ REQUEST_URI은 QUERY_STRING의 뒷면을 포함하여 요청의 전체 문자열입니다.

location /about {
    root /data/nginx/html/pc;
 
    index index.html;
    #try_files $uri /about/default.html;  #访问的页面不存在,跳转到指定页面
    #try_files $uri $uri/index.html $uri.html /about/default.html;
    try_files $uri $uri/index.html $uri.html =489 ;
}

확인 만 try_files $ URI $ URI / index.html을 $ uri.html /about/default.html 설정, 시간을

root@z2:/data/nginx/html/pc/about# ls
default.html  xx.html

root@z2:/data/nginx/html/pc/about# curl www.mage.net/about/xx
xx PAGE

root@z2:/data/nginx/html/pc/about# curl www.mage.net/about/xx/
default

척 设置 try_files $ uri $ uri / index.html $ uri.html = 489;시

root@z2:/data/nginx/html/pc/about# curl    www.mage.net/about/xx
xx PAGE
root@z2:/data/nginx/html/pc/about# curl    www.mage.net/about/xx/
root@z2:/data/nginx/html/pc/about# curl  -I  www.mage.net/about/xx/
HTTP/1.1 489 
Server: nginx/1.16.1
Date: Wed, 11 Mar 2020 03:14:42 GMT
Content-Length: 0
Connection: keep-alive

10. 긴 연결 설정

서버에서 HTTP 내에서 구성 할 수 있습니다

keepalive_timeout 번호, 긴 시간 제한, 0 비활성화 연결 길이, 75S 기본 필드는 일반적으로 HTTP 글로벌 구성에서 사이트로 배열되는 동안 #은 연결 상태를 유지하도록 설정

keepalive_requests 번호 # 커넥터에 허용 된 리소스 요청의 최대 수의 길이는 기본값은 100입니다

#仅测试用,为了显示效果,实际一般不修改
keepalive_requests 2;  


#开启长连接后,返回客户端的会话保持时间为60s,单次长连接累计请求达到指定次数请求或65秒就会被断开,后面的60为发送给客户端应答报文头部中显示的超时时间设置为60s:如不设置客户端将不显示超时时间。
keepalive_timeout 65 60;
telnet www.mage.net 80
# 下面内容直接粘贴到屏幕,然后回车
GET / HTTP/1.1
HOST: www.mage.net

테스트 : 당신은 두 번 최대를 요청할 수 있습니다. 그리고 65 개 이상의 초 원격 호스트에 의해 폐쇄 연결을 분리합니다.

root@z2:~# telnet www.mage.net 80
Trying 192.168.1.102...
Connected to www.mage.net.
Escape character is '^]'.
GET / HTTP/1.1
HOST: www.mage.net

HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Wed, 11 Mar 2020 03:49:45 GMT
Content-Type: text/html
Content-Length: 7
Last-Modified: Tue, 10 Mar 2020 06:13:18 GMT
Connection: keep-alive
Keep-Alive: timeout=60
ETag: "5e672ffe-7"
Accept-Ranges: bytes

pc web
GET / HTTP/1.1
HOST: www.mage.net

HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Wed, 11 Mar 2020 03:49:50 GMT
Content-Type: text/html
Content-Length: 7
Last-Modified: Tue, 10 Mar 2020 06:13:18 GMT
Connection: close
ETag: "5e672ffe-7"
Accept-Ranges: bytes

pc web
Connection closed by foreign host.

11. 구성 다운로드로 서버

root@z2:~# mkdir /data/nginx/html/pc/download
root@z2:~# vim /apps/nginx/conf/conf.d/pc.conf
root@z2:~# cp -r /data/img/ /data/nginx/html/pc/download/
location /download {
    autoindex on;  
    autoindex_exact_size on; 
    autoindex_localtime on; 
    root /data/nginx/html/pc;
                }
  • 자동 색인의 전원을 R에 자동 색인
  • 에 autoindex_exact_size # 만 도시 오프 (바이트) 대략적인 크기를 정확한 파일 크기를 계산 (KB, MB, GB)
  • 에 autoindex_localtime # 쇼 기계 시간이 아닌 GMT (그리니치) 시간

액세스 볼 수있는 www.mage.net/download/.

주의하십시오 / PC 함량이 루트 디렉토리에 표시되지 않습니다 / 데이터 /의 nginx / HTML / 데이터 / nginx를 / HTML / PC / 다운로드 / 표시

다운로드 속도 제한

limit_rate rate; #限制响应给客户端的传输速率,单位是bytes/second,默认值0表示无限制
限速与不限速的对比:
limit_rate 10k;

검증 : 큰 파일의 시험보기 전에, 제한은 90M / s입니다,하지만 더 이상 10K 이상 / s의 외모의 8 / 9K에 대해 이후에만 제한되어있다

(12)로 업로드 서버

HTTP 필드에서 많은 서버 업로드해야하기 때문에

client_max_body_size 10m;
client_body_buffer_size 16k;
client_body_temp_path /apps/nginx/temp 1 2 2; #reload Nginx会自动创建temp目录
  • 1m client_max_body_size #은 최대 클라이언트가 하나의 파일을 업로드 기본 값 1m를 제공하여 허용

  • client_body_buffer_size 크기, 패킷의 본체 부의 버퍼 크기를 수신하는 각각의 클라이언트 요청이 # 기본적 16K 이러한 크기 이상,이 임시 위치에 저장되는 디스크 상에 정의 client_body_temp_path로 다음 명령에 의해 지시

  • client_body_temp_path 경로 [레벨 1 [레벨 2 [LEVEL3]] 일시적 클라이언트 요청 메시지 본체 부와 디렉토리라는 16 진수 후 서브 디렉토리 구조와 양, 값을 저장하는 해시를 사용 # 경로 설정 기억 파일 이름으로 전진, 2, 2를 차단 한 후 :

    [root@s3 ~]# md5sum /data/nginx/html/pc/index.html
    95f6f65f498c74938064851b1bb 96 3d 4 /data/nginx/html/pc/index.html
    1级目录占1位16进制,即2^4=16个目录 0-f
    2级目录占2位16进制,即2^8=256个目录 00-ff
    3级目录占2位16进制,即2^8=256个目录 00-ff
    
게시 62 개 원래 기사 · 원 찬양 7 · 전망 1258

추천

출처blog.csdn.net/qq_36801585/article/details/104880401