高性能web服务器nginx(二)之常用功能举例

一、配置使用nginx

1、提供测试页

[[email protected] ~]# mkdir /www/a.com/htdoc
[[email protected] ~]# cat /www/a.com/htdoc/index.html 
<h1>www.a.com</h1>
[[email protected] ~]# chown -R nginx.nginx /www/a.com/htdoc/

2、备份配置文件并简要更改配置文件

[[email protected] ~]# cp /etc/nginx/nginx.conf{,.bak}
[[email protected] ~]# vim /etc/nginx/nginx.conf
server {
      listen       80;
      server_name  localhost;
      #charset koi8-r;
      #access_log  logs/host.access.log  main;
      location / {
          root   /data/www;
          index  index.html index.htm;
      }

3、从新加载配置文件

[[email protected] ~]# service nginx reload
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重新载入 nginx:               [确定]

4、测试

二、置Nginx的虚拟主机

1、修改配置文件

[[email protected] ~]# vim /etc/nginx/nginx.conf
 server {        
             listen       80;
          server_name  www.a.com;
        location / {
            root   /www/a.com/htdoc;
            index  index.html index.htm;
        }
    }
    server {
        listen       80;
        server_name  www.b.org;
        location / {
            root   /www/b.org/htdoc;
            index  index.html index.htm;
        }
    }

2、提供测试页面

[[email protected] ~]# mkdir /www/b.org/htdoc
[[email protected] ~]# cat /www/b.org/htdoc/index.html 
<h1>www.b.org<h1>
[[email protected] ~]# chown -R nginx.nginx /www/b.org/htdoc/

3、重新加载nginx配置

[[email protected] ~]# service nginx reload
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重新载入 nginx:             [确定]

4、修改windows的hosts文件

Windows 10下路径:C:\Windows\System32\drivers\etc\hosts

192.168.1.8 www.a.com
192.168.1.8 www.c.net
192.168.1.8 www.b.org
192.168.1.8 www.example.com

5、测试一下

三、配置Nginx基于用户的访问控制

1、提供测试文件

[[email protected] ~]# mkdir /www/b.org/bbs
[[email protected] ~]# cat /www/b.org/bbs/test.html
 <h1>Auth Page! </h1>

2、修改配置文件

    server {
            listen       80;
        server_name  www.b.org;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   /www/b.org/htdoc;
            index  index.html index.htm;
        }
      location /bbs {
            root   /www/b.org;
            index  index.html index.htm;
            auth_basic  "Auth Page";
            auth_basic_user_file /etc/nginx/.user;
        }
    }

3、生成认证文件及用户

注意需要安装httpd才能使用此命令!

[[email protected] ~]# htpasswd -c -m /etc/nginx/.user  admin
New password: 
Re-type new password: 
Adding password for user admin

4、重新加载一下nginx配置文件

[[email protected] ~]# service nginx reload

5、测试一下

四、配置Nginx提供状态页面

1、修改配置文件

        location /status {
            root   /;
            stub_status on;
            auth_basic "Nginx Status";
            auth_basic_user_file /etc/nginx/.user;
        }

2、重新加载一下配置文件

3、输入密码后测试

  • Active connections表示当前活跃的连接数。
  • 第三行的3个数字表示 Nginx当前总共处理了36个连接, 成功创建了36次握手,总共处理了90个请求。
  • 最后一行的Reading表示Nginx读取到客户端Header信息数; Writing表示Nginx返回给客户端的Header信息数;Waiting表示Nginx已经处理完、正在等候下一次请求指令时的驻留连接数。

五、配置Nginx的错误页面

1、提供404错误页面

[[email protected] ~]# cat /www/b.org/htdoc/404.html
<h1>404 error</h1>
<h1>404 error</h1>
<h1>404 error</h1>
<h1>404 error</h1>

2、修改配置文件

[[email protected] ~]# vim /etc/nginx/nginx.conf
在对应的虚拟主机中添加以下:
error_page  404                 /404.html;

3、重新加载一下nginx配置文件

4、访问不存在的页面测试

六、建立下载站点autoindex模块

1、指令说明

Nginx默认是不允许列出整个目录的。如需此功能,打开nginx.conf文件,在location server 或 http段中加入autoindex on;另外两个参数最好也加上去:

  • autoindex_exact_size off;默认为on,显示出文件的确切大小,单位是bytes。改为off后,显示出文件的大概大小,单位是kB或者MB或者GB。
  • autoindex_localtime on;默认为off,显示的文件时间为GMT时间。改为on后,显示的文件时间为文件的服务器时间。

2、修改配置文件

 location /download {
            root   /www/b.org;
            index  index.html index.htm;
            autoindex on ;
            autoindex_exact_size on;
            autoindex_localtime on;
        }

3、创建下载目录

[[email protected] ~]# mkdir /www/b.org/download
[[email protected] ~]# cp /etc/fstab /www/b.org/download

4、加载配置文件

5、浏览器测试

七、定义防盗链

1、定义防盗链的步骤

  • 定义合规的引用  valid_referers none | blocked | server_names | string ...;
  • 拒绝不合规的引用
         if  ($invalid_referer) {
          rewrite ^/.*$ http://www.b.org/403.html
         }

2、referer模块简介

nginx_http_referer_module模块通常用于阻挡来源非法的域名请求.我们应该牢记,伪装Referer头部是非常简单的事情,所以这个模块只能用于阻止大部分非法请求.我们应该记住,有些合法的请求是不会带referer来源头部的,所以有时候不要拒绝来源头部(referer)为空的请求。

防盗链模块指令 :

referer_hash_bucket_size
语法:  referer_hash_bucket_size  size; 
默认值为64: referer_hash_bucket_size  64; 
配置段:server,location
referer_hash_max_size
语法:   referer_hash_max_size  size; 
默认值2048k:  referer_hash_max_size  2048; 
配置段: Context:  server,location
valid_referers
语法: valid_referers none | blocked | server_names | string ...; 
配置段:  server,location

指定合法的来源’referer’, 他决定了内置变量$invalid_referer的值,如果referer头部包含在这个合法网址里面,这个变量被设置为0,否则设置为1。记住,不区分大小写的。

  • none                 #“Referer” 来源头部为空的情况;从浏览器输入的。
  • blocked            #“Referer” 来源头部不为空,但是里面的值被代理或者防火墙删除了,这些值都不以http://或者https://开头.
  • server_names       #“Referer”来源头部包含当前的server_names(当前域名)
  • arbitrary string   #任意字符串,定义服务器名或者可选的URI前缀.主机名可以使用*开头或者结尾,在检测来源头部这个过程中,来源域名中的主机端口将会被忽略掉
  • regular expression  #正则表达式,~表示排除https://或http://开头的字符串.

3、实例:

location ~* \.(gif|jpg|png|bmp)$ {
   valid_referers none blocked *.b.org  server_names ~\.google\.~\.baidu\.;
   if ($invalid_referer) {
       return 403;
     #rewrite ^/ http://www.b.org/403.jpg;
    }
}

4、防盗链应用举例

编辑配置文件添加图片的防盗链:

[[email protected] ~]# vim /etc/nginx/nginx.conf
 location ~* \.(jpg|gif|jpeg|png|)$ {
            root /www/b.org/;
            valid_referers none blockd www.b.org *.b.org;
            if ($invalid_referer){
               rewrite ^/ http://www.b.org/403.html;
             }
        }

在网站a.com中引用b.org网站的内容:

[[email protected] ~]# cat /www/a.com/htdoc/test.html
<h1>www.a.com</h1>
<img src="http://www.b.org/images/1.jpeg">

浏览器测试:

查看日志:

[[email protected] ~]# tail  -1 /var/log/nginx/error.log 
2015/09/09 22:48:00 [error] 8327#0: *31 open() "/www/b.org/404.html" failed (2: No such file or directory), client: 192.168.1.103, server: www.b.org, request: "GET /403.html HTTP/1.1", host: "www.b.org", referrer: "http://www.a.com/test.html"

八、重写模块

1、重写模块介绍

Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Nginx之前,需要编译安装PCRE库。根据相关变量重定向和选择不同的配置,从一个location跳转到另一个location,不过这样的循环最多可以执行10次,超过后nginx将返回500错误。同时,重写模块包含set指令,来创建新的变量并设其值,这在有些情景下非常有用的,如记录条件标识、传递参数到其他location、记录做了什么等等。

2、重写模块指令

break指令: 完成当前设置的重写规则,停止执行其他的重写规则。
语法:  break; 
应用配置段: server,location, if
if指令:
语法: if(condition) { ... } 
应用配置段: server,location
注意:尽量考虑使用try_files代替。

判断的条件:

  • 一个变量的名称:空字符传”“或者一些“0”开始的字符串为false。
  • 字符串比较:使用=或!=运算符
  • 正则表达式匹配:使用~(区分大小写)和~*(不区分大小写),取反运算!~和!~*。
  • 文件是否存在:使用-f和!-f操作符
  • 目录是否存在:使用-d和!-d操作符
  • 文件、目录、符号链接是否存在:使用-e和!-e操作符
  • 文件是否可执行:使用-x和!-x操作符
return指令:
语法: returncode [text];
            returncode URL;
            returnURL;
应用配置段:server,location, if

停止处理并为客户端返回状态码。非标准的444状态码将关闭连接,不发送任何响应头。可以使用的状态码有:204,400,402-406,408,410, 411, 413, 416与500-504。如果状态码附带文字段落,该文本将被放置在响应主体。相反,如果状态码后面是一个URL,该URL将成为location头补值。没有状态码的URL将被视为一个302状态码。

rewrite指令:
语法:rewriteregex replacement [flag];
应用配置段: server,location, if

按照相关的正则表达式与字符串修改URI,指令按照在配置文件中出现的顺序执行。可以在重写指令后面添加标记。

注意:如果替换的字符串以http://开头,请求将被重定向,并且不再执行多余的rewrite指令。

尾部的标记(flag)可以是以下的值:

  • last      #停止处理重写模块指令,之后搜索location与更改后的URI匹配。
  • break     #完成重写指令。
  • redirect  #返回302临时重定向,如果替换字段用http://开头则被使用。
  • permanent #返回301永久重定向。

关于last、break的详细说明:

  • last:解决死循环,对当前请求的处理检查URL重写规则,如果匹配规则需要被重写,服务器对后续规则无需再检查,让客户端将新的重写请求发送给服务器,服务器重新发起检查,这次检查会重头到尾检查一遍。
  • 如果没用last:一个location中多条URL重写规则,对请求的处理会检查规则,匹配到后发现需要重写,服务器会通知客户端请求需要重写,客户端就重新发重写过后的请求到服务器,服务器对新的重写好的请求还是需要检查规则,如果检查到匹配某条规则后就又需要重写,客户端就又要发送新的重写请求到服务器,形成循环重写了。
  • break:客户端发送请求URL到服务器,服务器发现其需要匹配URL重写规则,服务器通知客户端请求需要重写,客户端就将重写过的请求URL发送给服务器,服务器不再检查URL重写规则,直接响应。
rewrite_log指令:启用时将在error log中记录notice级别的重写日志。
语法: rewrite_log  on | off;
默认值: rewrite_log  off;
应用配置段: http,server, location, if
set指令:为给定的变量设置一个特定值。
语法: set$variable value;
应用配置段:server,location, if
uninitialized_variable_warn指令:控制是否记录未初始化变量的警告信息。
语法:uninitialized_variable_warnon | off;
默认值: uninitialized_variable_warnon;
应用配置段: http,server, location, if

3、举例

server {
   ...
   rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
   rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra  last;
   return  403;
   ...
}

解释:

如果访问URI为download开头后面跟任意内容,后跟media下跟一个任意名称的以.结尾的所有内容都替换成为download开头后面跟任意内容,把media替换成mp3下跟任意名称以.mp3结尾的内容了,实现了后向引用。

4、rewrite重写应用举例

在配置文件中添加如下:

location /download {
            root   /www/b.org;
            autoindex on ;
            rewrite ^/download/(.*\.(jpg|gif|jpeg|png|))$ /images/$1 last;
        }

在images目录中放入图片,:

[[email protected] ~]# ls /www/b.org/images/
1.jpeg
[[email protected] ~]# ls /www/b.org/download/
fstab

浏览器测试:

5、rewrite_log记录日志功能举例

将记录错误日志的级别提高:error_log  /var/log/nginx/error.log  notice;

开启rewrite_log:rewrite_log on ;

浏览几次页面后查看错误日志:

[[email protected] ~]# tail -2 /var/log/nginx/error.log 
2015/09/09 22:30:36 [notice] 8301#0: *29 "^/download/(.*\.(jpg|gif|jpeg|png|))$" matches "/download/1.jpeg", client: 192.168.1.103, server: www.b.org, request: "GET /download/1.jpeg HTTP/1.1", host: "www.b.org"2015/09/09 22:30:36 [notice] 8301#0: *29 rewritten data: "/images/1.jpeg", args: "", client: 192.168.1.103, server: www.b.org, request: "GET /download/1.jpeg HTTP/1.1", host: "www.b.org"

九、gzip压缩模块

1、基于gzip实现资源文件压缩模块

发送给客户端的资源结果做压缩: ngx_http_gzip_module

整个网站内容压缩了: ngx_http_gzip_static_module

注意需要编译:--with-http_gzip_static_module

此模块的作用就是在接到请求后,会到url相同的路径的文件系统去找扩展名为“.gz”的文件,如果不存在,再将文件进行gzip压缩,再发送出去,这样可以避免重复的压缩无谓的消耗资源,这个模块不受gzip_types限制,会对所有请求有效。所以建议不要在全局上使用,因为一般来说大部分都是动态请求,是不会有.gz这个文件的,建议只在局部我们确认有.gz的目录中使用。   我们常用的是对发送给客户端的资源结果做压缩。

2、模块说明

gzip压缩模块是ngx_http_gzip_module,是nginx内置的。
gzip:决定是否开启gzip模块。
语法: gzip on | off; 
默认关闭: gzip off; 
配置段: http, server, location, if in location
gzip_buffers:设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间。
语法: gzip_buffers number size; 
默认值: gzip_buffers 32 4k|16 8k; 
配置段: http, server, location
gzip_comp_level:设置gzip压缩等级,等级越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大。
语法: gzip_comp_level level; 
默认压缩比是1: gzip_comp_level 1; 
配置段: http, server, location
gzip_min_length:当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩
语法: gzip_min_length length; 
默认值是20byte: gzip_min_length 20; 
配置段: http, server, location
gzip_http_version:用于识别http协议的版本,早期的浏览器不支持gzip压缩,用户会看到乱码,所以为了支持前期版本加了此选项,目前此项基本可以忽略。
语法: gzip_http_version 1.0 | 1.1; 
默认版本是1.1: gzip_http_version 1.1; 
配置段: http, server, location
gzip_proxied:Nginx做为反向代理的时候启用
语法: gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...; 
默认关闭: gzip_proxied off; 
配置段: http, server, location

指令参数详解:

  • off        #关闭所有的代理结果数据压缩
  • expired    #启用压缩,如果header中包含”Expires”头信息
  • no-cache   #启用压缩,如果header中包含”Cache-Control:no-cache”头信息
  • no-store   #启用压缩,如果header中包含”Cache-Control:no-store”头信息
  • private    #启用压缩,如果header中包含”Cache-Control:private”头信息
  • no_last_modified   #启用压缩,如果header中包含”Last_Modified”头信息
  • no_etag    #启用压缩,如果header中包含“ETag”头信息
  • auth       #启用压缩,如果header中包含“Authorization”头信息
  • any        #无条件压缩所有结果数据
gzip_types:设置需要压缩的MIME类型,非设置值不进行压缩。
语法: gzip_types mime-type ...; 
默认压缩html文件: gzip_types text/html; 
配置段: http, server, location

3、nginx官网实例

gzip            on;
gzip_min_length 1000;
gzip_proxied    expired no-cache no-store private auth;
gzip_types      text/plain application/xml;

开启gzip压缩;

最小压缩文件大小是1000字节;

如果header中包含”Cache-Control:no-cache”头信息,”Cache-Control:no-store”头信息,Cache-Control:private”头信

息,“Authorization”头信息就启用压缩 压缩的类型为text和xml文件 ;

4、应用举例

编辑配置文件启用gzip压缩功能:

[[email protected] ~]# vim /etc/nginx/nginx.conf
    gzip on;
    gzip_http_version 1.0;      
    gzip_comp_level 2;
    gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/json;
    gzip_disable msie6;

重新载入配置文件:

[[email protected]  ~]# service nginx reload

浏览器测试:

十、http首部报文模块

1、模块介绍

ngx_http_headers_module模块提供了两个重要的指令add_header和expires,来添加 “Expires” 和 “Cache-Control” 头字段,对响应头添加任何域字段。add_header可以用来标示请求访问到哪台服务器上。expires指令用来对浏览器本地缓存的控制。

2、模块指令

add_header指令
语法: add_header name value [always]; 
配置段: http, server, location, if in location 
对响应代码为200,201,204,206,301,302,303,304,或307的响应报文头字段添加任意域。如: add_header From example.com
expires指令
语法: expires [modified] time; 
expires epoch | max | off;
默认关闭: expires off; 
应用配置段: http, server, location, if in location

在对响应代码为200,201,204,206,301,302,303,304,或307头部中是否开启对“Expires”和“Cache-Control”的增加和修改操作。 可以指定一个正或负的时间值,Expires头中的时间根据目前时间和指令中指定的时间的和来获得。 epoch表示自1970年一月一日00:00:01 GMT的绝对时间,max指定Expires的值为2037年12月31日23:59:59,Cache-Control的值为10 years。

Cache-Control头的内容随预设的时间标识指定:

设置为负数的时间值:Cache-Control: no-cache。

设置为正数或0的时间值:Cache-Control: max-age = #,这里#的单位为秒,在指令中指定。

参数off禁止修改应答头中的”Expires”和”Cache-Control”。

实例:对图片,flash文件在浏览器本地缓存30天

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
 {
           expires 30d;
 }

十一、配置Nginx基于ssl提供https服务

1、模块指令

  • SSL指令 :为一个server{...}虚拟主机开启HTTPS

语法: ssl on | off;

默认值: ssl off;

应用配置段:http, server

  • ssl_certificate指令 :为当前的虚拟主机指定PEM格式的证书文件。

语法: ssl_certificate file;

配置段: http, server

  • ssl_certificate_key指令 :为当前的虚拟主机指定PEM格式的私钥文件。

语法: ssl_certificate_key file;

配置段: http, server

  • ssl_client_certificate指令

语法: ssl_client_certificate file;

配置段: http, server

  • ssl_dhparam指令:此指令出现于nginx 0.7.2版 ,指定PEM格式含有Diffie-Hellman参数的文件,用于TLS会话键。

语法: ssl_dhparam file;

配置段:http, server

  • ssl_ciphers指令:指定许可密码的描述。密码以openssl支持的格式指定;使用以下命令可以查看openssl支持的完整格式列表:openssl ciphers。

语法:ssl_ciphers ciphers;

默认值:ssl_ciphers HIGH:!aNULL:!MD5;

配置段:http, server

  • ssl_crl指令:此指令在nginx 0.8.7版本开始出现,指定一个PEM格式的证书吊销文件,用于检查客户端证书。

语法:ssl_crl file;

配置段:http, server

  • ssl_prefer_server_ciphers指令:对SSLv3和TLSv1协议的服务器端密码需求优先级高于客户端密码。

语法:ssl_prefer_server_ciphers on | off;

默认值:ssl_prefer_server_ciphers off;

配置段:http, server

  • ssl_protocols指令:指定使用的SSL协议

语法:ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];

默认值:ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

配置段:http, server

  • ssl_verify_client:是否开启客户端证书验证。参数“ask”在客户端主动提出检查证书时,对客户端证书进行检查。

语法:ssl_verify_client on | off | optional | optional_no_ca;

默认值:ssl_verify_client off;

配置段:http, server

  • ssl_verify_depth:设置客户端证书链的深度。

语法:ssl_verify_depth number;

默认值:ssl_verify_depth 1;

配置段:http, server

  • ssl_session_cache指令:设置用来存储SSL会话缓存类型和大小。

语法:ssl_session_cache off | none | [builtin[:size]] [shared:name:size];

默认值:ssl_session_cache none;

配置段:http, server

缓存类型分类:

off         #硬关闭:明确告诉客户端这个会话不可用;
none     #软关闭:告诉客户端会话能被重用,但Nginx实际上不会重用它们。
builtin     #OpenSSL内置缓存,仅可用于一个工作进程;缓存大小用户会话数来指定。注意:使用该指令会导致内存碎片,慎用。
shared      #位于所有工作进程的共享缓存。缓存大小用字节数指定,1MB缓存能容纳4000会话。每个共享缓存必须拥有字节的名称,同名的缓存可以用于多个虚拟主机。

  • ssl_session_timeout指令:设置客户端能够重复使用存储在缓存中的会话参数时间。

语法:ssl_session_timeout time;

默认值:ssl_session_timeout 5m;

配置段:http, server

2、应用举例

创建CA自签证书:

[[email protected] ~]# cd /etc/pki/CA/private/
[[email protected] private]# (umask 077; openssl genrsa 2048 > cakey.pem)
[[email protected] private]# ls
cakey.pem
[[email protected] private]# openssl req -new -x509 -key ./private/cakey.pem -out cacert.pem
[[email protected] private]# cd ..
[[email protected] CA]# openssl req -new -x509 -key ./private/cakey.pem -out cacert.pem
[[email protected] CA]# ls
cacert.pem  crl        index.txt       index.txt.old  private  serial.old
certs       crlnumber  index.txt.attr  newcerts       serial
[[email protected] CA]# touch serial index.txt ^C
[[email protected] CA]# echo 01 > serial

生成证书申请:

[[email protected] CA]# mkdir /etc/nginx/ssl
[[email protected] CA]# cd /etc/nginx/ssl
[[email protected] ssl]# (umask 077; openssl genrsa 1024 > nginx.key) 
[[email protected] ssl]# openssl req -new -key nginx.key -out nginx.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.‘, the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [Henan]:
Locality Name (eg, city) [Xinyang]:
Organization Name (eg, company) [Companyname]:
Organizational Unit Name (eg, section) [Linuxer]:
Common Name (eg, your name or your server‘s hostname) []:www.test.com
Email Address []:

Please enter the following ‘extra‘ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
让CA签名并颁发证书:
[[email protected] ssl]# openssl ca -in nginx.csr -out nginx.crt -days 3650
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 3 (0x3)
        Validity
            Not Before: Sep 10 03:14:41 2015 GMT
            Not After : Sep  7 03:14:41 2025 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = Henan
            organizationName          = Companyname
            organizationalUnitName    = Linuxer
            commonName                = www.test.com
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                65:A0:4E:DC:8C:5B:2C:22:5B:78:33:C6:11:85:33:A2:3E:4A:59:B5
            X509v3 Authority Key Identifier: 
                keyid:C4:67:DE:CF:AD:0B:94:03:C0:ED:5D:86:90:DE:36:B4:AE:DF:B1:2F

Certificate is to be certified until Sep  7 03:14:41 2025 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

修改配置文件:

[[email protected] ssl]# vim /etc/nginx/nginx.conf
 server {
        listen        443;
        server_name  www.b.org;
        ssl                  on;
        ssl_certificate      /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key  /etc/nginx/ssl/nginx.key;
        ssl_session_timeout  5m;
        ssl_protocols  SSLv2 SSLv3 TLSv1;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers   on;
        #error_page 404  /www/b.org/404.html;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   /www/b.org/htdoc;
            index  index.html index.htm;
         }
      }

从新载入配置文件:

[[email protected] ssl]# service nginx restart

测试:

注意在浏览器中可能出现证书不受信任,只需要跳过即可。

时间: 2024-10-10 21:15:24

高性能web服务器nginx(二)之常用功能举例的相关文章

高性能Web服务器Nginx

高性能Web服务器Nginx介绍 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,可以运行在UNIX.GUN/LINUX.BSD.MAC OS X以及Microsoft Windows等操作系统中,中国大陆使用nginx网站用户有:百度.京东.新浪.网易.腾讯.淘宝等. Nginx的功能 Nginx的模块从功能上分为

高性能Web服务器Nginx使用指南

Nginx是一个高性能的http服务器和反向代理服务器,是一个高度模块化的web服务器,和Apache的模块化不同,Nginx的模块不支持动态编译,Nginx要加入新的第三方模块的时候,必须先下载模块,然后重新编译Nginx,而Apache只需要将新加入的模块编译成so文件,然后配置文件指定是否加载即可,无需重新编译Apache.并且Nginx的rewrite模块会使用正则表示式进行匹配,因此需要pcre软件库的支持,另外ssl加密需要openssl-devel软件库的支持,gzip压缩传输需要

高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式

通过<高性能Web服务器Nginx的配置与部署研究——(11)应用模块之Memcached模块的两大应用场景>一文,我们知道Nginx从Memcached读取数据的方式,如果命中,那么效率是相当高的.那么: 1. 如果不命中呢? 我们可以到相应的数据服务器上读取数据,然后将它缓存到Nginx服务器上,然后再将该数据返回给客户端.这样,对于该资源,只有穿透 Memcached的第一次请求是需要到数据服务器读取的,之后在缓存过期时间之内的所有请求,都是读取Nginx本地的.不过Nginx的 pro

高性能web服务器nginx(一)之基本概念

说明本篇文章大部分参考此人的博文:http://freeloda.blog.51cto.com/2033581/1285722,建议若想继续深入学习nginx时最好先看下此人所写的文章,总结的很详细,然后在找相关的书籍和查阅官方文档学习. 一.NGINX介绍 1 简介 传统上基于进程或线程模型架构的web服务通过每进程或每线程处理并发连接请求,这势必会在网络和I/O操作时产生阻塞,其另一个必然结果则是对内存或CPU的利用率低下.生成一个新的进程/线程需要事先备好其运行时环境,这包括为其分配堆内存

高性能Web服务器Nginx的配置与部署研究(2)Nginx入门级配置与部署及“Hello World”

1. Nginx 程序包 目前最新的开发版本时1.1.12: Linux/Unix:nginx-1.1.12.tar.gz Windows:nginx-1.1.12.zip 我们可以下载稳定版尝试: Linux/Unix:nginx-1.0.11.tar.gz Windows:nginx-1.0.11.zip 2. 下载.解压.安装 Nginx 我们这里以Linux/Unix:nginx-1.0.11.tar.gz为例.下载并解压缩: wget http://nginx.org/download

高性能Web服务器Nginx的配置与部署研究(1)Nginx简介及入门示例

概述 从这篇博文起,将带领读者们一起领略Nginx的强大. Nginx 是做什么用的?我相信很多朋友都已经使用过,如果你没有,那么你一定知道以下这些名称之一:Apache,Lighttpd,Tomcat,Jetty. 它们占据了目前Web服务器的几乎全部江山,其中 Apache 是知名度最高的,同时也是最为重量级的.Lighttpd.Tomcat 和 Jetty 相对轻量级,其中 Jetty.Tomcat 多用于作为Java服务器容器. Nginx 是一个基于 BSD-like 协议.开源.高性

高性能Web服务器Nginx的配置与部署研究(9)核心模块之HTTP模块基本常用指令

一.HTTP模块的作用是什么? Nginx的HTTP模块用于控制Nginx的HTTP进程. 二.指令 1. alias 含义:指定location使用的路径,与root类似,但不改变文件的跟路径,仅适用文件系统的路径. 语法:alias <file-path | directory-path> 缺省:N/A 作用域:http.server.location 示例: location /i/ { alias /home/michael/web/i/; } 则请求 /i/logo.png 则返回

高性能Web服务器Nginx的配置与部署研究(6)核心模块之主模块的测试常用指令

1. daemon 含义:设置是否以守护进程模式运行 语法:daemon on|off 缺省:on 示例:daemon off; 注意:生产环境(production mode)中不要使用daemon指令,这些选项仅用于开发测试(development mode). 2. debug_points 含义:断点调试 语法:debug_points [stop|abort] 缺省:none 示例:debug_points stop; 注意:在Nginx内有一些assert断言,这些断言允许Nginx

高性能Web服务器Nginx的配置与部署研究(4)Nginx常用命令

1. 启动 Nginx [email protected]:sudo ./sbin/nginx 2. 停止 Nginx [email protected]:sudo ./sbin/nginx -s stop [email protected]:sudo ./sbin/nginx -s quit -s都是采用向 Nginx 发送信号的方式. 3. Nginx 重载配置 [email protected]:sudo ./sbin/nginx -s reload 上述是采用向 Nginx 发送信号的方