Nginx 部署 升级 用户认证 虚拟主机 SSL加密

nginx:俄罗斯人开发的一套轻量级的HTTP服务器,它是一个高性能的HTTP服务器、反向代理服务器同时也是IMAP/POP3/SMTP服务器。它是一套模块化软件,根据需求来安装相应的模块。

一 源码安装部署nginx

1、官网下载nginx源码包;http://nginx.org(官网)

2、创建用户(nginx为了安全需要指定用户安装,因为避免服务器被×××后拥有root权限)

useradd -s /sbin/nologin nginx

3、源码安装

(1)、tar解包

tar  xf  nginx-1.10.3.tar.gz

(2)、./configure 配置

cd  nginx-1.10.3

./configure  --prefix=/usr/local/nginx  --user=nginx  --group=nginx  --with-http_ssl_module

(3)、编译

make

(4)、安装

make install

备注: –preifx 指定目录,–user 指定用户, –group 指定组 –with-http_ssl_module 支持加密功能 ;具体要安装要安装那些模块需要根据后期要实现什么功能来定,因为模块安装的越多,空间资源占用大,漏洞也多,所以需要模块化安装。

常用命令:
/usr/local/nginx/sbin/nginx #启动

/usr/local/nginx/sbin/nginx -s stop #停止

/usr/local/nginx/sbin/nginx -s reload #重新加载配置文件

/usr/local/nginx/sbin/nginx -V #查看nginx安装信息

为了后期方便使用需要给nginx做一个软连接,后期使用命令时就不需要打绝对路径,直接nginx。

ln -s /usr/local/nginx/sbin/nginx /sbin

安装过程中如出现报错信息,根据报错信息来查看是否缺少依赖包。(gcc、pcre-devel、openssl-devel)

4、启动nginx访问测试

nginx  #启动

netstat  -nutlp  |  grep  80

firefox  http://nginx服务器地址

netstat命令可以查看系统中启动的端口信息,该命令常用选项如下:

-a显示所有端口的信息

-n以数字格式显示端口号

-t显示TCP连接的端口

-u显示UDP连接的端口

-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口

-p显示监听端口的服务名称是什么(也就是程序名称)

二 nginx升级

1、官网下载新版本的nginx

2、tar解包

tar  xf  nginx-1.12.2.tar.gz

3、配置

./configure  --prefix=/usr/local/nginx  --user=nginx  --group=nginx  --with-http_ssl_module

4、编译

make

5、备份旧版本nginx,拷贝新版本nginx,并把内存里正在运行的旧版升级

mv  /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginxold  

cp  /nginx-1.12.2/objs/nginx   /usr/local/nginx/sbin/nginx

make upgrade  (此命令包含两层意思:1杀死老版本的软件,2升级软件并启动)

6、检测

nginx  -V

备注:在源码配置编译安装时,必须要在源码包目录里进行。

三 用户认证

客户端用户访问网页需要输入用户名密码才能访问网页。

配置文件解析

vim /usr/local/nginx/conf/nginx.conf

worker_processes 1; #启动的进程数量

events {

worker_connections  1024;   #1个进程允许1024个人访问

}

http {

server {          #在nginx主配置文件里面一个server代表一个网站;

listen 80;        #监听80端口

server_name localhost;    #网站域名

root html;     #网站根目录

}

}

1、安装生成用户名密码文件的软件包httpd-tools

yum -y install httpd-tools

htpasswd  -c  /usr/local/nginx/pass tom   #生成叫tom的用户米和密码

New password:        #输入密码

Re-type new password:     #再次输入密码

cat  /usr/local/nginx/pass   #查看用户名和密码文件

备注:如果要创建多个用户,此时需要去掉 -c 选项,因为-c为创建的意思,如果不去掉-c当前创建的用户会直接替换原来的用户名和密码

2、修改主配置文件

在server_name 下面添加两行关键字

auth_basic  "input youinfo";    #认证提示符

auth_basic_user_file  "/usr/local/nginx/pass";   #认证密码文件

3、重新加在nginx

nginx  -s reload

4、访问测试

firefox  http://nginx服务器地址

三 虚拟主机

作用:一台服务器,一个nginx上面可以运行多个网站

三种类型:基于域名,基于端口,基于ip地址

基于域名的虚拟主机原理:

1、修改配置文件,一个server对应一个网站

vim /usr/local/nginx/conf/nginx.conf

http {

    server {

                listen 80;    #监听80端口

                server_name  www.a.com;  #定义域名

                     charset  utf-8;  #网站支持中文(utf-8) 万国编码

                     location  /  {

                                    root   html;   #指定网站根目录

                                    index  index.html index.htm; }

}

    server {

                listen 80;   #监听80端口

                server_name  www.b.com;   #定义域名

                location  /  { 

                            root   www;   #指定网站根目录

                            index  index.html index.htm; }

}

}

备注:要实现基于ip或者端口时,直接在配置文件里面改相应的位置,例如,基于端口 修改listen 8000; 基于ip 修改 listen 192.168.1.2:80 。

另一个网站的页面文件需要在nginx安装目录下创建,要与html同级。

2、创建www文件夹

mkdir  /usr/local/nginx/www

在www文件里面,写b网站的页面内容

3、重新加载nginx服务

nginx  -s  reload

客户端测试

1、编写本地域名解析文件

vim  /etc/hosts

ip地址       域名    域名

2、打开浏览器访问

四 SSL虚拟主机

通过私钥和证书对网站进行加密,使用https访问。

nginx要实现此功能需要安装 –with-http_ssl_module模块。

加密算法:

对称加密:AES、DES 主要应用于单机数据加密,加密和解密的密码一样。

非对称加密:RSA、DSA主要应用于网络数据加密,加密和解密密码不一样。

信息摘要:MD5、sha256,主要应用在数据完整性校验、数据秒传等。

1、生成私钥匙与证书,(私钥和证书必须放在conf文件下)

openssl  genrsa  > cert.key   #生成私钥

openssl  req  -new  -x509  -key cert.key  > cert.pem   #为cert.key生成证书

2、修改配置文件

vim /usr/local/nginx/conf/nginx.conf

server {

    listen       443 ssl;

    server_name  www.b.com;


    ssl_certificate      cert.pem;    #证书

    ssl_certificate_key  cert.key;   #私钥


    ssl_session_cache    shared:SSL:1m;

    ssl_session_timeout  5m;


    ssl_ciphers  HIGH:!aNULL:!MD5;

    ssl_prefer_server_ciphers  on;


    location / {

        root   www;

        index  index.html index.htm;

    }

}

3、重新加载nginx

nginx  -s  reload

客户端使用https访问,会发现地址栏里的域名旁有个×××的锁。证明已经完成。

猜你喜欢

转载自blog.csdn.net/weixin_42796092/article/details/81209733