MySQL Slow Log慢日志分析(一)

 

医生给病人诊断的时候,一般会使用听诊器来诊断肺部是否正常。如果你的MySQL出现了性能问题,第一个需要“诊断”的就是slow log(慢日志)了。

slow log文件很小,使用more less等命令就足够了。如果slow log很大怎么办?这里介绍MySQL自带的工具mysqldumpslow来帮你解析慢日志(也可以跳过本文,直接阅读Manual)。

  1. 基本使用

$mysqldumpslow slow.log > slow.dat
$more slow.dat

输出的数据:

Count: 3 Time=62.67s (188s) Lock=0.00s (0s) Rows=1623770.7 (4871312), root[root]@localhost
SELECT /*!N SQL_NO_CACHE */ * FROM `feed_receive_0287`

这里我们能够获得:这条语句在满日志中的出现次数、平均执行时间、总共执行时间、row send等。例如:SELECT /*!N SQL_NO_CACHE */ * FROM `feed_receive_0287`一共执行了3次,平均每次使用62秒。

在默认情况下,mysqlslowdump的输出结果会使用N和S代替SQL中出现的数字和字符串。例如:如下慢日志

SELECT COUNT(*) as counter FROM feed_receive f WHERE f.RATED_UID=21621 AND f.suspended=-1 AND f.rater_type=4 AND f.rate=-2 AND f.username=”orczhou.com”

会被mysqlslowdump抽象为:

SELECT COUNT(*) as counter FROM feed_receive f WHERE f.RATED_UID=N AND f.suspended=-N AND f.rater_type=N AND f.rate=-N AND f.username=”S”

如果想禁用这种抽象,可以使用-a参数

  1. 排序参数

mysqlslowdump默认输出结果是按照count(SQL出现的次数)排序的。可以通过如下的参数控制:

-s t 按总query time排序 -s at 按平均query time排序
-s l 按总locktime排序 -s al 按平均lock time排序
-s s 按总row send排序 -s as 按平均row send排序
-s c 按count排序

例如:

mysqldumpslow -s at slow.log.old > slow.2.dat #按照平均query time排序查看日志

  1. 其他参数
-r 倒着排序
-a 不要将数字和字符串抽象成N和S
-g 仅仅分析相匹配的query

 

  1. 常用命令

由上面的常用参数就可以组合出如下的常用命令:

mysqldumpslow -s t slow.log.old > slow.1.dat #按照query time排序查看日志
mysqldumpslow -s at slow.log.old > slow.2.dat #按照平均query time排序查看日志
mysqldumpslow -a -s at slow.log.old > slow.3.dat #按照平均query time排序并且不抽象数字的方式排序
mysqldumpslow -a -s c slow.log.old > slow.4.dat #安装执行次数排序

参考:mysqldumpslow Manual

(全文完)

 

使用logrotate管理nginx日志文件

描述:linux日志文件如果不定期清理,会填满整个磁盘。这样会很危险,因此日志管理是系统管理员日常工作之一。我们可以使用”logrotate”来管理linux日志文件,它可以实现日志的自动滚动,日志归档等功能。下面以nginx日志文件来讲解下logrotate的用法。

配置:
1、在/etc/logrotate.d目录下创建一个nginx的配置文件”nginx”配置内容如下

#vim /etc/logrotate.d/nginx
/usr/local/nginx/logs/*.log {
daily
rotate 5
missingok
notifempty
sharedscripts
postrotate
if [ -f /usr/local/nginx/logs/nginx.pid ]; then
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
fi
endscript
}
保存退出。

2、执行logrotate

#/usr/sbin/logrotate -f /etc/logrotate.d/nginx
在/usr/local/nginx/logs目录中会产生
error.log
error.log.1
说明logrotate配置成功。

3、让logrotate每天进行一次滚动,在crontab中添加一行定时脚本。

#crontab -e
59 23 * * *  /usr/sbin/logrotate -f /etc/logrotate.d/nginx
每天23点59分进行日志滚动

4、配置文件说明
daily:日志文件每天进行滚动
rotate:保留最5次滚动的日志
notifempty:日志文件为空不进行滚动
sharedscripts:运行postrotate脚本
下面是一个脚本

postrotate
if [ -f /usr/local/nginx/logs/nginx.pid ]; then
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
fi
endscript
脚本让nginx重新生成日志文件。

如何利用logrotate工具自动切分滚动中的日志文件

在很多实际项目中,应用程序会持续写日志,如果程序代码中没有调用支持自动切分(如按filesize或date切割)的日志库,则日志文件会很快增长

在很多实际项目中,应用程序会持续写日志,如果程序代码中没有调用支持自动切分(如按filesize或date切割)的日志库,则日志文件会很快增长到G级别。单机操作大文件对后续跟进日志来说非常不方便。

本文介绍如何利用logrotate这个工具来在应用程序外部切分日志。

 

1. logrotate是什么

logrotate是大多数linux系统自带的日志切割工具,在shell终端输入”man logrotate”可查看其简介(部分摘出如下):logrotate is designed to ease administration of systems that generate large numbers of log files. It allows automatic rotation, compression, removal, and mailing of log files. Each log file may be handled daily, weekly, monthly, or when it grows too large.

更完整的简介可以在shell终端查看其man文档,这里不赘述。

总之,我们知道它可以用来切割仍在滚动的日志文件即可,这里的“仍在滚动”是指当前日志文件仍在被应用程序持续进行追加写操作。

 

2. logrotate的适用场景

如果文件是静态的(即当前没有应用程序对齐进行写操作),则split是更常用的静态文件切割工具,其用法简介见这里 ,此处略过。

logrotate常用来切割仍在被写的“动态”文件,它支持 按时间间隔或文件大小 来触发文件的自动切分(automatic rotation)。具体用法下面说明。

3. 如何使用logrotate

根据man logrotate的说明,logrotate用法很简单:

logrotate [-dv] [-f|--force] [-s|--state file] config_file+

其中[]中出现的option(s)均是可选项,我们只需提供一份配置文件即可,下面用示例对配置文件格式做说明。

# sample logrotate configuration file
compress # 全局配置项,对切分后的文件做gzip压缩
# 一个配置文件中可以包含多个相互独立的sections
# 其中,待切分文件路径 + { xxx }构成了一个独立的section,每个section可以配置针对该类文件的切分行为
# 注意:全局配置项会作用于每个section,除非在该section配置中覆盖了全局配置项的行为 
# 下面section的配置表明按时间间隔(weekly)触发日志的自动切分,历史数据只保存最近的5份
# 切分完成后,通过发送-HUP信号来重启syslogd这个daemon进程。
/var/log/messages {  
  rotate 5  
  weekly
  postrotate
    /sbin/killall -HUP syslogd
  endscript
}
# 下面的示例section表明按文件大小触发日志自动切分,大小单位除了上面所示的k外,还可以是M或G
# 待切分文件路径可以有多个,多个路径用空格隔开
"/var/log/httpd/access.log" /var/log/httpd/error.log {
  rotate 5
  mail www@my.org
  size=100k
  sharedscripts # 表明HUP信号只需在所有文件均切分完成后发送一次,若无该配置,则每完成一个文件的切分就会执行一次postrotate/endscript之间配置的命令
  postrotate
    /sbin/killall -HUP httpd
  endscript
}
# 下面的示例section表明按时间(monthly)触发切分
# 切分后的历史文件会被保存到olddir指定的目录下(该目录需要事先mkdir出来,否则会报错)
/var/log/news/news.crit {
  monthly
  rotate 2
  olddir /var/log/news/old
  missingok # 若section起始处指定的待切分文件不存在,也不会报错(默认会报错)
  postrotate
    kill -HUP 'cat /var/run/inn.pid'
  endscript
  nocompress # 切分时不做压缩,这里改写了配置文件第1行的全局配置
}

上述配置文件中,”#”表示后面是注释,它可以独占一行,也可以与配置项在同一行。

配置项”rotate 5″表明切分后的历史文件最多保存最近的5份,若触发本次切分时已有5份历史文件(默认为messages.1/messages.2 /messages.3/messages.4/messages.5),则文件messages.5会被物理删除,剩余文件后缀序号依次加1。

切分的具体执行过程可以参考《鸟哥的Linux私房菜》在 这里 的说明。

上面的示例配置文件只是展示了logrotate配置文件的基本格式,该工具还支持其它众多配置项,具体可以参考man logrotate的说明。

下面的配置文件说明了在实际项目中如何按文件大小对不允许restart的应用程序进行日志自动切分。

# filename: logrotate.conf
 /home/work/running.log {
   copytruncate # 先copy running.log内容至历史文件,然后清空running.log的内容
   rotate 30	 # 保存30份历史日志 
   size=1G		# 若日志文件达到1G,则触发切分
   olddir /home/work/history # 指定历史日志存放目录
   notifempty	# 若/home/work/running.log是空文件,则不做切分
   missingok	 # 若/home/work/running.log不存在,不报错
}

特别注意 copytruncate 这个配置项,根据其文档说明(见下面的摘录), 它可能会导致部分数据丢失,在不允许日志数据丢失的应用场景下,不应该使用该配置 (若日志不允许丢失,则最好在应用程序代码中支持HUP信号来实现优雅重启,这样就可以避免使用copytruncate;当然,也可以用logrotate支持的create配置来达到目的)。

copytruncate

Truncate  the  original  log file in place after creating a copy, instead of moving the old log file and optionally creating a new one, It can be used when some program can not be told to close its logfile and thus might continue writing (appending) to the previous log file forever. Note that there is a very small time slice between copying the file and truncating it, so some logging data might be lost. When this option is used, the create option will have no effect, as the old log file stays in place.

 

【参考资料】

1. man logrotate

2. 鳥哥的Linux私房菜 – 登錄檔的輪替(logrotate)====================== EOF ===================

Linux平台下远程磁盘mount到本地

 

1.在源服务器端启动nfs和portmap服务
service nfs start
service portmap start
通过ntsysv,把nfs和portmap服务加到自启动服务中

2.在源服务器编辑配置文件/etc/exports
/data 1.1.1.1(rw,no_root_squash)
含义:共享/data目录给IP地址为1.1.1.1

3.配置好后重启源服务器端的nfs服务
service nfs restart

4.在客户端启动portmap服务
service portmap start

5.在客户端mount远程文件夹
mkdir /data
mount -t nfs 1.1.1.1:/data /data

 

linux chkconfig命令参数及用法详解

chkconfig(check config)

功能说明:chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
语  法:chkconfig [–add][–del][–list][系统服务] 或 chkconfig [–level <等级代号>[系统服务][on/off/reset]

补充说明:这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。

 

linux os 将操作环境分为以下7个等级:

0:开机(请不要切换到此等级)
1:单人使用者模式的文字界面
2:多人使用者模式的文字界面,不具有网络档案系统(NFS)功能
3:多人使用者模式的文字界面,具有网络档案系统(NFS)功能
4:某些发行版的linux使用此等级进入x windows system
5:某些发行版的linux使用此等级进入x windows system
6:重新启动

参  数:
–add   新增所指定的系统服务
–del 删除所指定的系统服务
–level 指定该系统服务要在哪个执行等级中开启或关闭
–list   列出当前可从chkconfig指令管理的所有系统服务和等级代号
on/off/reset   在指定的执行登记,开启/关闭/重置该系统服务

 

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。

 

1:chkconfig 命令也可以用来激活和解除服务。chkconfig –list 命令显示系统服务列表,以及这些服务在运行级别0到6中已被启动(on)还是停止(off)。

chkconfig –list

chkconfig –list httpd

httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

2:chkconfig 还能用来设置某一服务在某一指定的运行级别内被启动还是被停运。譬如,要在运行级别3、4、5中停运 nscd 服务,使用下面的命令:

chkconfig –level 345 nscd off

3:由 xinetd 管理的服务会立即被 chkconfig 影响。譬如,如果 xinetd 在运行,finger 被禁用,那么执行了 chkconfig finger on 命令后,finger 就不必手工地重新启动 xinetd 来立即被启用。对其它服务的改变在使用 chkconfig 之后不会立即生效。必须使用service servicename  start/stop/restart命令来重起服务

语法:

chkconfig –list [name]
chkconfig –add name
chkconfig –del name
chkconfig [–level levels] name <on|off|reset>
chkconfig [–level levels] name

chkconfig 没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回true,否则返回false。如果在服务名后面指定了on,off或者reset,那么chkconfi 会改变指定服务的启动信息。on和off分别指服务被启动和停止,reset指重置服务的启动信息,无论有问题的初始化脚本指定了什么。on和off开关,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效。

–level选项可以指定要查看的运行级而不一定是当前运行级。

需要说明的是,对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。

chkconfig –list :显示所有运行级系统服务的运行状态信息(on或off)。如果指定了name,那么只显示指定的服务在不同运行级的状态。

chkconfig –add name:增加一项新的服务。chkconfig确保每个运行级有一项启动(S)或者杀死(K)入口。如有缺少,则会从缺省的init脚本自动建立。

chkconfig –del name:删除服务,并把相关符号连接从/etc/rc[0-6].d删除。

chkconfig [–level levels] name <on|off|reset>:设置某一服务在指定的运行级是被启动,停止还是重置。例如,要在3,4,5运行级停止nfs服务,则命令如下:

chkconfig –level 345 nfs off

运行级文件:

每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用- 代替运行级。第二行对服务进行描述,可以用/ 跨行注释。
例如,random.init包含三行:
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for /
# higher quality random number generation.

附加介绍一下Linux系统的运行级的概念:
Linux中有多种运行级,常见的就是多用户的2,3,4,5 ,很多人知道5是运行X-Windows的级别,而0就是关机了。运行级的改变可以通过init命令来切换。例如,假设你要维护系统进入单用户状态,那么,可以使用init1来切换。在Linux的运行级的切换过程中,系统会自动寻找对应运行级的目录/etc/rc[0-6].d下的K和S开头的文件,按后面的数字顺序,执行这些脚本。对这些脚本的维护,是很繁琐的一件事情,Linux提供了chkconfig命令用来更新和查询不同运行级上的系统服务。

范例:

1.查看在各种不同的执行等级中,各项服务的状况:
$chkconfig –list

2.列出系统服务vsftpd在各个执行等级的启动情况:
$chkconfig –list vsftpd

3.在执行等级3,5时,关闭vsftpd系统服务:
$chkconfig –level 35 vsftpd off

4.在执行等级2,3,5时,开启 vsftpd系统服务:
$chkconfig –level 235 vsftpd on

5.关闭一些自己不需要的服务->
如果没有打印机:
chkconfig –level 235 cups off
如果没有局域网:
chkconfig –level 235 smb off
如果不需要远程用户登录的:
chkconfig –level 235 sshd off
如果不需要定时任务的:
chkconfig –level 235 crond off
如果不需要添加新硬件的:
chkconfig –level 235 kudzu off

 

使用范例:
chkconfig –list        #列出所有的系统服务
chkconfig –add httpd        #增加httpd服务
chkconfig –del httpd        #删除httpd服务
chkconfig –level httpd 2345 on        #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态
chkconfig –list        #列出系统所有的服务启动情况
chkconfig –list mysqld        #列出mysqld服务设置情况
chkconfig –level 35 mysqld on        #设定mysqld在等级3和5为开机运行服务,–level 35表示操作只在等级3和5执行,on表示启动,off表示关闭
chkconfig mysqld on        #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级

如何增加一个服务:
1.服务脚本必须存放在/etc/ini.d/目录下;
2.chkconfig –add servicename
在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;
3.chkconfig –level 35 mysqld on
修改服务的默认启动等级。

 

http://www.linuxso.com/command/chkconfig.html

Curl 请求 https 协议页面,直接返回 502 错误

Curl 请求 https 协议页面,直接返回 502 错误

 

解决办法:

重新安装 openssl

下载:

Wget https://www.openssl.org/source/openssl-1.0.1j.tar.gz

 

编译,安装

./config –sharezlib

Make

Make install

 

升级 curl

wget http://curl.haxx.se/download/curl-7.39.0.tar.gz

./configure

Make

Make install

 

重新安装 php

‘./configure’ ‘–prefix=/usr/local/php5329’ ‘–with-mysql=/usr/local/mysql5’ ‘–with-mysqli=/usr/local/mysql/bin/mysql_config’ ‘–with-xmlrpc=shared’ ‘–enable-sockets’ ‘–enable-mbstring’ ‘–with-pcre-regex’ ‘–with-gd’ ‘–with-zlib’ ‘–with-png-dir=/usr’ ‘–with-jpeg-dir=/usr’ ‘–with-freetype-dir=/usr’ ‘–enable-fastcgi’ ‘–enable-force-cgi-redirect’ ‘–with-iconv’ ‘–enable-exif’ ‘–enable-ftp’ ‘–enable-magic-quotes’ ‘–with-curl’ ‘–with-libxml-dir=/usr’ ‘–enable-zip’

 

 

 

linux升级openssl和php_openssl模块

 服务器 pony_chiang  8个月前 (04-09)  1155浏览  0评论

一、OpenSSL源码升级

2014年4月8日,XP宣布正式停止服务的日子,也是OpenSSL爆出大漏洞的日子。

OpenSSL主要是负责在一些敏感的数据提交上面被广泛使用,不乏大家经常访问的一些网站:支付宝、微信、淘宝、网银、社交、门户等知名网站。

官方上面推荐大家将OpenSSL升级到OpenSSL 1.0.1g

这不火急火燎的加入的升级大军,先查看下自己机器上的OpenSSL版本。

1

2

openssl version

#OpenSSL 1.0.0-fips 29 Mar 2010

很明显不是官方所说的版本,必须要升级好吧,我们以源码的形式。先去下载相对应的OpenSSL版本。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

cd/usr/local/src/

wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz

tar-zxvf openssl-1.0.1g.tar.gz

cd  openssl-1.0.1g

./configshared zlib

make&& makeinstall

 

#修改历史的OpenSSL文件设置备份

mv/usr/bin/openssl/usr/bin/openssl.old

mv/usr/include/openssl/usr/include/openssl.old

 

#设置软连接使其使用新的OpenSSL版本 刚刚安装的OpenSSL默认安装在/usr/local/ssl

ln-s /usr/local/ssl/bin/openssl/usr/bin/openssl

ln-s /usr/local/ssl/include/openssl/usr/include/openssl

 

#更新动态链接库数据

echo”/usr/local/ssl/lib”>> /etc/ld.so.conf

ldconfig -v

我们再来看看OpenSSL版本信息.

1

2

3

openssl version

 

#OpenSSL 1.0.1g 7 Apr 2014

如果是1.0.1g,说明你安装正确了。

二、php_openssl组件版本更新

1、与php一同设置的编译参数情况

如果你和我一样很久很久以前安装了php的版本,而且又是在编译php版本的时候直接使用“–with-openssl”的话,似乎也没有添加什么路径的话,那么你现在可能需要重新再编译你的php版本了,首先我们要获取到当时编译php的参数,注意你的php源码版本要一致哦,当然你可以重新升级你的php版本也无妨(如果你选择升级php版本可能会导致你安装的一些组件无法使用,或者在启动php-fpm时候会有错误提示,我还是不太建议大家升级php版本,最好是找当前版本一直的源码进行重新编译)。

1

2

3

4

5

6

7

#查看php版本

/usr/local/php/bin/php-v

 

#获取php编译时的参数

/usr/local/php/bin/php-i | grepCommand

 

#./configure’  ‘–prefix=/usr/local/php’ ‘–with-mysql’ ‘–with-mysqli’ ‘–with-iconv-dir’ ‘–with-zlib’ ‘–with-libxml-dir’ ‘–enable-xml’ ‘–with-curl’ ‘–enable-fpm’ ‘–enable-mbstring’ ‘–with-gd’ ‘–with-openssl’ ‘–with-mhash’ ‘–enable-sockets’ ‘–with-xmlrpc’ ‘–enable-zip’ ‘–enable-soap’ ‘–disable-fileinfo’

注意把这些“’”都去掉,因为我们采用了源码升级OpenSSL的方式,所以新的OpenSSL安装路径在上面提到了

1

2

3

4

5

cd/usr/local/src/php-5.5.6

 

./configure  –prefix=/usr/local/php–with-mysql –with-mysqli –with-iconv-dir–with-zlib –with-libxml-dir–enable-xml –with-curl –enable-fpm –enable-mbstring –with-gd –with-openssl=/usr/local/ssl/–with-mhash –enable-sockets –with-xmlrpc –enable-zip –enable-soap –disable-fileinfo

 

make&& makeinstall

你采用的是和之前源码安装一样的版本库无非就是重新编译一次需要点时间,其他都不需要修改就可以安装对openssl的升级了。我们重启下php-fpm服务。

1 service php-fpm restart

然后我们去phpinfo()函数输出里面去找找openssl的版本是否是OpenSSL 1.0.1g,是的话就证明一切操作都顺利了。
到这里或许你可能会说我为什么不用phpize了,这不是有点累死人的节奏,我是尝试过了,一开始就对php_openssl进行单独模块编译,编译好了之后,重新去启动php-fpm告诉我下面这个提示。

1 PHP Warning: Module ‘openssl’already loaded inUnknown on line 0 ……

也就是说OpenSSL已经被加载了请不要重复加载,可是我将php.ini文件仔细查看也没有重复添加openssl组件,我的猜想应该是在php编译的时候配置了,所以你使用phpize添加进去的模块当然是重复的模块了。

2、未启用php_openssl模块

貌似这种情况有点差强人意的感觉,因为你从来没有使用过openssl,何必要升级呢?除非你有新的业务需要。咳咳,扯淡了。
如果你没有上面第一种情况的话,那么这种方式应该是你的最佳方式了。

1

2

3

4

5

6

7

cd/usr/local/src/php-5.5.6/ext/openssl

 

/usr/local/php/bin/phpize

 

./configure–with-openssl=/usr/local/ssl/–with-php-config=/usr/local/php/bin/php-config

 

make&& makeinstall

最后就在/usr/local/php/lib/php.ini文件中添加一行

1 extension=openssl.so

重启php-fpm,去phpinfo()找找openssl的版本看看。

 

nginx 启用 ssl模块

默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,通常这些文件并不在同一个软件包中。通常这个文件名类似libssl-dev。

生成证书

可以通过以下步骤生成一个简单的证书:
首先,进入你想创建证书和私钥的目录,例如:

  1. $ cd /usr/local/nginx/conf

创建服务器私钥,命令会让你输入一个口令:

  1. $ openssl genrsa -des3 -out server.key 1024
666777888

创建签名请求的证书(CSR):

  1. $ openssl req -new -key server.key -out server.csr
666777888

在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:

  1. $ cp server.key server.key.org
  2. $ openssl rsa -in server.key.org -out server.key

配置nginx

最后标记证书使用上述私钥和CSR:

  1. $ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

修改Nginx配置文件,让其包含新标记的证书和私钥:

  1. server {
  2.     server_name YOUR_DOMAINNAME_HERE;
  3.     listen 443;
  4.     ssl on;
  5.     ssl_certificate /usr/local/nginx/conf/server.crt;
  6.     ssl_certificate_key /usr/local/nginx/conf/server.key;
  7. }

重启nginx。
这样就可以通过以下方式访问:

https://YOUR_DOMAINNAME_HERE

另外还可以加入如下代码实现80端口重定向到443IT人乐园

  1. server {
  2. listen 80;
  3. server_name ww.centos.bz;
  4. rewrite ^(.*) https://$server_name$1 permanent;
  5. }

转载请注明文章来源:http://www.centos.bz/2011/12/nginx-ssl-https-support/