ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Nginx应用与运维——Nginx Web服务应用实战(HTTP增强协议服务器的搭建)

Nginx应用与运维——Nginx Web服务应用实战(HTTP增强协议服务器的搭建) Nginx Web服务应用实战7、HTTP增强协议服务器的搭建7.1、HTTP/2协议服务7.2、WebDAV协议服务7、HTTP增强协议服务器的搭建7.1、HTTP/2协议服务HTTP/2是HTTP协议的2.0版本该协议通过多路复用、请求优化、HTTP头压缩等功能提升网络传输速度、优化用户体验。HTTP/2使用二进制分帧层将传输的数据分割为更小的数据和帧并对它们进行二进制格式编码处理以实现在不改变HTTP现有语义等标准的基础上提升传输性能从而降低响应延迟、提高请求吞吐的能力。HTTP/2通过多路复用技术使客户端可以并行发送多个请求以提高带宽的利用率。HTTP/2是基于SPDY协议设计的是SPDY的演进版本但其不强制使用HTTPS协议仍可支持HTTP明文传输。Nginx是通过ngx_http_v2_module实现HTTP/2协议支持的编译配置时可通过增加参数–with-http_v2_module启用HTTP2模块。HTTP2模块配置指令如下。http2_recv_buffer_size指令可编写在http指令域中。http2_chunk_size、http2_push、http2_push_preload指令可编写在http、server、location指令域中。其余的指令可编写在http、server指令域中。HTTP2服务器推送可以实现将多个资源文件CSS、JS、图片等同时发送到客户端如下页面中包含style.css和nginx.png两个资源文件。!DOCTYPEhtmlhtmlmetacharsetutf-8titleNginx HTTPv2 Test/titleheadlinkrelstylesheethrefstyle.css/headbodyh1Nginx HTTPv2 Test/h1imgsrcnignx.png/body/html在没有服务器推送的情况下客户端通过3个GET方法获取该页面的所有资源。在启用服务器推送后客户端只需通过一个GET方法就可以获取到该页面的所有资源。配置样例如下server{listen443ssl http2 default_server;ssl_certificate ssl/www_nginxbar_org.pem;# 网站证书文件ssl_certificate_key ssl/www_nginxbar_org.key;# 网站证书密钥文件ssl_password_file ssl/www_nginxbar_org.pass;# 网站证书密钥密码文件root /opt/nginx-web;location /{http2_push /style.css# 服务端推送http2_push /nginx.png# 服务端推送}}7.2、WebDAV协议服务WebDAV(Web-based Distributed Authoring andVersioning)是基于HTTP/1.1的增强协议。该协议使用户可以直接对Web服务器进行文件读写并支持对文件的版本控制和写文件的加锁及解锁等操作。Nginx通过ngx_http_dav_module模块实现对WebDAV协议的支持使用户通过WebDAV模块的配置指令实现文件的管理操作该模块支持WebDAV协议的PUT、DELETE、MKCOL、COPY和MOVE请求方法在配置编译参数时需要添加–with-http_dav_module参数启用该功能。ngx_http_dav_module模块的配置指令如表所示。上述指令都可编写在http、server、location指令域中。Nginx的自有模块对WebDAV协议的支持并不完整可以通过第三方模块nginx-dav-ext-module增加文件特性查找和对写文件的加锁与解锁支持。ngx_http_dav_module模块的配置指令如表所示。dav_ext_lock_zone指令只能编写在http指令域中。dav_methods和dav_ext_lock指令可编写在http、server、location指令域中。WebDAV协议方法及方法说明如表所示。进行WebDAV协议的MOVE/COPY操作时会通过HTTP请求头属性字段Destination指定目标路径如果客户端请求头中没有字段Destination, Nginx会直接报错。为增加服务端兼容性可以通过第三方模块headers-more-nginx-module的more_set_input_headers指令在MOVE/COPY操作的HTTP请求头中强制添加Destination字段。WebDAV协议服务配置过程如下所示。(1)模块编译模块编译配置样例如下# 编译模块$ ./configure --with-http_dav_module --add-module../nginx-dav-ext-module --add-module../headers-more-nginx-module(2)设置文件夹权限文件夹权限配置样例如下chown-Rnobody:nobody /opt/nginx-web/davfilechmod-R700/opt/nginx-web/davfile(3)设置登录账号及密码登录账号及密码配置样例如下echoadmin:$(opensslpasswd123456)/etc/nginx/conf/.davpasswd(4)Nginx配置Nginx配置样例如下dav_ext_lock_zonezonedavlock:10m;# DAV文件锁内存共享区server{listen443ssl http2;# 启用HTTPS及HTTP/2提升传输性能server_name dav.nginxbar.org;access_log logs/webdav.access.log main;root /opt/nginx-web/davfile;ssl_certificate ssl/www_nginxbar_org.pem;# 网站证书文件ssl_certificate_key ssl/www_nginxbar_org.key;# 网站证书密钥文件ssl_password_file ssl/www_nginxbar_org.pass;# 网站证书密钥密码文件ssl_session_cache shared:SSL:10m;# 会话缓存存储大小为10MBssl_session_timeout 20m;# 会话缓存超时时间为20分钟client_max_body_size 20G;# 最大允许上传的文件大小location /{autoindex on;autoindex_localtime on;set$dest$http_destination;if(-d$request_filename){# 对目录请求、对URI自动添加“/”rewrite ^(.*[^/])$$1/;set$dest$dest/;}if($request_method(MOVE|COPY)){# 对MOVE|COPY方法强制添加Destination请求头more_set_input_headersDestination: $dest;}if($request_method MKCOL){rewrite ^(.*[^/])$$1/break;}dav_methods PUT DELETE MKCOL COPY MOVE;# DAV支持的请求方法dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK;# DAV扩展支持的请求方法dav_ext_lockzonedavlock;# DAV扩展锁绑定的内存区域create_full_put_path on;# 启用创建目录支持dav_access user:rw group:r all:r;# 设置创建的文件及目录的访问权限auth_basicAuthorized Users WebDAV;auth_basic_user_file /etc/nginx/conf/.davpasswd;}}主流操作系统均支持WebDAV协议用户既可以直接通过添加网络设备的方式添加WebDAV网站目录也可以使用支持WebDAV协议的客户端进行访问。
返回列表