Centos7 nginx 搭建https服务器

Nginx简介

Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

实验环境:

系统版本:centos7x3.10.0-514.el7.x86_64

Nginx版本:nginx1.14.0

关闭防火墙并禁止开机自启

systemctl stop firewalld.service
systemctl disable firewalld

关闭selinux

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g‘ /etc/sysconfig/selinux

修改主机名

vi /etc/hostname

nginx.wangfeiyu.com

域名绑定IP

vi /etc/hosts

重启 reboot

安装nginx服务

1、安装nginx依赖环境包

yum install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

2、官网下载nginx1.14.0压缩包

wget https://nginx.org/download/nginx-1.14.0.tar.gz

3、解压nginx

tar zxf nginx-1.14.0.tar.gz

4、进入解压目录

cd nginx-1.14.0

5、编译nginx

1)默认编译方式

. /configure

2)自定义编译选项

. /configure \
--user=nginx \
--group=nginx \
--prefix=/usr/local/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--pid-path=/usr/local/nginx/conf/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
--with-http_ssl_module
注:以上为默认编译方式和具体指定的编译方式,任选以上这两种之一即可。--with-http_ssl_module这个选项是https的重要模块必须安装。

3)本文中使用的编译安装方式

./configure
--prefix=/usr/local/nginx
--with-http_stub_status_module
--with-http_ssl_module

注:以上--with-http_ssl_module这个模块是https的关键,必须安装!

6、安装nginx

make && make install

7、启动nginx

方式一

1)启动nginx

/usr/local/nginx/sbin/nginx

2)关闭nginx

/usr/local/nginx/sbin/nginx -s stop

3)重启nginx

/usr/local/nginx/sbin/nginx -s reload

注:如果嫌以上方式太麻烦,可以做软连接ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx或者在全局环境变量里增加nginx环境变量,然后直接使用nginx即可!

方式二

1)编辑nginx服务启动文件

vi /etc/init.d/nginx

#! /bin/bash
#chkconfig: - 85 15
PATH=/usr/local/nginx
NAME=nginx
DAEMON=$PATH/sbin/$NAME
CONFIGFILE=$PATH/conf/$NAME.conf
PIDFILE=$PATH/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
do_start() {
$DAEMON -c $CONFIGFILE || echo -e "\033[32m nginx already running \033[0m"
}
do_stop() {
$DAEMON -s stop || echo -e "\033[31m nginx not running \033[0m"
}
do_reload() {
$DAEMON -s reload || echo -e "\033[31m nginx can‘t reload \033[0m"
}
case "$1" in
start)
echo -e "\033[32m $NAME running \033[0m"
do_start
;;
stop)
echo -e "\033[31m $NAME stoping \033[0m"
do_stop
;;
reload|graceful)
echo -e "\033[32m $NAME configuration...\033[0m"
do_reload
;;
restart)
echo -e "\033[32m Restarting : $NAME \033[0m"
do_stop
do_start
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac
exit 0

注:切记编辑完启动脚本以后一定要给予执行权限,不然启动无效!

2)设置启动文件执行权限

chmod +x /etc/init.d/nginx

3)启动nginx

//设置开机自启

chkconfig nginx on

//启动nginx

/etc/init.d/nginx start

//重启nginx

/etc/init.d/nginx restart

//查看nginx服务启动状态

chkconfig --list

//查看nginx服务是否开启

netstat -antupl | grep nginx

8、开机启动nginx

1)编辑开机启动文件

vi /etc/rc.local

添加一行/usr/local/nginx/sbin/nginx

2)设置启动文件权限

chmod 755 /etc/rc.local

注:如果使用方式二脚本启动服务,那么以上启动方式可以省略!

9、访问测试

访问地址:http://192.168.152.77

升级nginx为https条件

1、查看nginx是否支持ssl

/usr/local/nginx/sbin/nginx -V

注:查看 configure arguments 信息中是否包含 -with-http_ssl_module 字样,如果没有则需要重新编译。找到之前安装 Nginx 时的编译目录,配置ssl模块,因为这次是升级nginx,所以不需要执行 make install,执行命令如下:
. /configure --with-http_ssl_module
make

2、查看openssl配置文件

vi /etc/pki/tls/openssl.cnf

注:以上截图默认就是这样的重要参数配置路径,如果你要配置修改路径,那么切记在后边签证书等等的操作都要按照这个配置路径去创建,不然当认证的时候会找不到证书!

3、创建生成证书需要的文件

1)创建证书索引数据库文件

touch /etc/pki/CA/index.txt

2) 指定第一个颁发证书的序列号

echo 01 > /etc/pki/CA/serial

注:必须是两位十六进制数,99之后是9A!

4、CA自签证书

1)生成CA私钥

cd /etc/pki/CA

umask 066

openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048

注:进入到/etc/pki/CA/目录下执行这两条命令!

2) 生成CA自签名证书

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem

注释:
-new: 生成新证书签署请求
-x509: 专用于 CA 生成自签证书
-key: 生成请求时用到的私钥文件
-days n:证书的有效期限
-out: 证书的保存路径
提示输入国家,省,市,公司名称,部门名称,CA主机名(颁发者名称)

4)查看生成的自签名证书

//linux系统下查看

openssl x509 -in /etc/pki/CA/cacert.pem -noout -text

//windows系统下查看

需要更改上述文件名后缀为.cer即可查看

5、颁发证书

1)在当前创建/root/key/目录

mkdir key

2)生成web服务器私钥

cd key/

umask 066

openssl genrsa -out key/service.key 2048

3) 生成CA证书申请文件

openssl req -new -key service.key -out service.csr

注:同样提示输入国家、省、市、公司等信息。切记:国家,省,公司名称三项必须和CA一致。主机名称必须和网站域名相同,如www.centos73.com。或者使用泛域名,即*.centos73.com,匹配所有。

4) 将证书文件移动到CA服务器/etc/pki/CA/csr目录下

mv service.csr /etc/pki/CA/csr/

注:默认好像是没有这个csr目录,那么就手动创建一个!

5) CA签署证书,并将证书颁发给请求者

openssl ca -in /etc/pki/CA/crl/service.csr -out /etc/pki/CA/certs/service.crt -days 365

6)查看证书中的信息

//查看自签证书

openssl x509 -in 绝对路径 -noout –text | issuer | subject | serial | dates

//查看颁发证书的序列号

cat /etc/pki/CA/serial

//查看指定编号的证书状态

openssl ca -status 1

注:这个编号是颁发的第几个证书,当前就一个所以是1!

//查看证书详细信息

cat /etc/pki/CA/index.txt

注:开头V表示当前证书的状态正常!

//查看subjects信息

注:yes表示subjects信息必须是唯一的,不能重复申请!

6、修改nginx配置文件

vi /usr/local/nginx/conf/nginx.conf

注:这里有一个坑就是默认的HTTPS SERVER这行必须删除,要不然一直报错!

7、重启nginx服务

/etc/init.d/nginx restart

8、测试(建议使用Firefox浏览器测试)

访问网页测试

1)域名访问地址:https://nginx.wangfeiyu.com/


注:以上截图访问方式使用的是https加密访问但是需要我们将证书导入浏览器才行!
导入方式:
//点击高级

//点击添加列外

//点击确认安全列外

注:以上截图已经可以访问到网页,说明nginx加密成功或者证书导入成功!其他的浏览器导入证书方式不一样,但是超级简单,自行百度即可!

2)IP访问地址:http://192.168.152.177/

注:这种方式默认使用的还是http协议!也可以设置为通过http跳转到https!

3)IP地址https访问:https://192.168.152.177/

注:以上截图访问方式使用的是https加密访问但是需要我们将证书导入浏览器才行!导入方式以上面方式相同。

原文地址:http://blog.51cto.com/13043516/2298296

时间: 2024-10-08 16:10:20

Centos7 nginx 搭建https服务器的相关文章

使用nginx搭建https服务器(转)

最近在研究nginx,整好遇到一个需求就是希望服务器与客户端之间传输内容是加密的,防止中间监听泄露信息,但是去证书服务商那边申请证书又不合算,因为访问服务器的都是内部人士,所以自己给自己颁发证书,忽略掉浏览器的不信任警报即可.下面是颁发证书和配置过程. 首先确保机器上安装了openssl和openssl-devel #yum install openssl #yum install openssl-devel 然后就是自己颁发证书给自己 #cd /usr/local/nginx/conf #op

nginx搭建https服务器

HTTPS简介 HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单来讲就是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL. 它是一个URI scheme(抽象标识符体系),句法类同http:体系,用于安全的http数据传输.https使用的默认端口是443. ssl证书 证书类型简介 要设置安全服务器,使用公共钥创建一对公私钥对.大多数

nginx搭建https单向证书

一)默认情况下ssl模块并未被安装,如果使用该模块则需要在编译nginx的时指定--with-http_ssl_module参数. wget http://nginx.org/download/nginx-1.3.16.tar.gz tar -xf nginx-1.3.16.tar.gz -C /usr/local/ cd /usr/local/nginx-1.3.16/ ./configure --prefix=/usr/local/nginx --user=nginx --group=ngi

nginx 搭建文件下载服务器

nginx 搭建下载服务器 一:配置 default.conf server {listen 80;server_name localhost; charset utf-8; #access_log /var/log/nginx/host.access.log main; location / { #root /usr/share/nginx/html; #index index.html index.htm; root /home/jingxiang; autoindex on; #开启索引功

Centos7.3搭建samba服务器,和windows共享文件

Centos7.3搭建samba服务器,和windows共享文件centos7.3的ip为192.168.11.1291,安装samba服务[[email protected] ~]# yum -y install samba* 2,创建共享目录并修改权限并编辑配置文件[[email protected] ~]# mkdir -p /home/study[[email protected] ~]# chmod u+x /home/study/修改selinux限制[[email protecte

linux 搭建https 服务器 (apache)

一.  安装准备 1.    安装Openssl 要使Apache支持SSL,需要首先安装Openssl支持.这里使用的是openssl-0.9.8k.tar.gz 下载Openssl:http://www.openssl.org/source/ tar -zxf openssl-0.9.8k.tar.gz    //解压安装包 cd openssl-0.9.8k                 //进入已经解压的安装包 ./config                          //配

vsftpd+nginx搭建图片服务器的一些问题

前言 五月份做了一个项目,其中有一个vsftpd+nginx搭建图片服务器的部分,一直出现错误,在控制台上显示上传成功,可是访问相关图片页面却一直访问不了,想了几天也没解决,于是这个bug就一直放在那,直到今天才解决. 一.安装vsftpd+nginx 这里网上都是资料,不多阐述 二.vsftpd遇到的错误    1.启动systemctl start vsftpd 发生错误: 解决方法 1)按照网上说的,把vsftpd.conf配置文件下的#listen_ipv6=YES注释掉或者改为NO 2

nginx搭建图片服务器

http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息,由于是即时计算的结果,所以网站访问量大的话,不建议使用. 安装nginx wget http://nginx.org/download/nginx-1.7.3.tar.gz 安装gd yum install gd-devel 安装p

Nginx配置https服务器

配置HTTPS主机,必须在server配置块中打开SSL协议,还需要指定服务器端证书和密钥文件的位置: server { listen 443;  #要加密的域名 server_name www.test.com; ssl on; #证书所在位置,本例默认放在了nginx的conf目录下 ssl_certificate ssl.crt;  #密钥所在位置,本例默认放在了nginx的conf目录下 ssl_certificate_key server.key; ssl_session_timeou