当前位置: 首页 > >

Nginx安装与升级学*笔记

发布时间:

Nginx服务器

nginx1.12安装包
链接:https://pan.baidu.com/s/1_9g2gSIvxQAK01KARf8DBg
提取码:gfud
1. 完成了Nginx软件的部署,支持https加密
2. 客户端的访问Nginx服务器
3. 升级Nginx服务器




Nginx安装
Web 服务器对比

* Unix和Linux*台下
* Apache、Nginx、Tengine、 Lighttpd
* Tomcat、IBM、WebSphere、Jboss
* windows*台下
* 微软IIS(Internet Information server)

Nginx简介

>Nginx("engine x")
* 是由俄罗斯人编写的十分轻量级的HTTP服务器
* 是一个i高兴能的HTTP和反响代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器
* 官网:http://nginx.org/

软件安装(使用源码包编译安装)

[root@proxy ~]# yum -y install gcc pcre-devel openssl-devel //安装依赖包,
[root@proxy ~]# useradd -s /sbin/nologin nginx #为了安全作用。
[root@proxy ~]# tar -xf nginx-1.10.3.tar.gz
[root@proxy ~]# cd nginx-1.10.3
[root@proxy nginx-1.10.3]# ./configure
> --prefix=/usr/local/nginx #指定安装路径
> --user=nginx #指定用户
> --group=nginx #指定组
> --with-http_ssl_module #开启SSL加密功能
[root@proxy nginx-1.10.3]# make && make install #编译并安装

nginx命令操作

[root@proxy ~]# /usr/local/nginx/sbin/nginx //启动服务常用选项: -v :查看编译从参数 -c:指定配置文件启动服务。
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s stop //关闭服务
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload //重新加载配置文件
[root@proxy ~]# /usr/local/nginx/sbin/nginx -V //查看软件信息
[root@proxy ~]# ln -s /usr/local/nginx/sbin/nginx /sbin/ //方便后期使用 进行软链接

Nginx配置文件以及目录


/usr/local/nginx/ #安装目录
-conf/nginx.conf #主配置文件
-html #网页目录
-logs #日志文件
-sbin/nginx #启动脚本

netstat命令可以查看系统中启动的端口信息,该命令常用选项如下:
选项含义
-a显示所有端口的信息
-n以数字格式显示端口号
-t显示TCP连接的端口
-u显示UDP连接的端口
-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口
-p显示监听端口的服务名称是什么(也就是程序名称)nginx服务默认通过TCP 80端口监听客户端请求:

[root@proxy1 ~]# netstat -anptu | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 14811/nginx: master
[root@proxy1 ~]# netstat -untlp | grep nginx #查看服务的端口
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 14811/nginx: master

#设置防火墙与selnux
[root@proxy ~]# firewall-cmd --set-default-zone=trusted
[root@proxy ~]# setenforce 0

Nginx进程管理
启动服务
[root@proxy ~]# /usr/local/nginx/sbin/nginx
常用选项:?? -v : 查看编译参数?? -c :指定配置文件,启动服务。查看服务相关进程进程及端口信息

[root@proxy1 ~]# ps aux | grep nginx
root 14811 0.0 0.1 45880 1908 ? Ss 11:23 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 15044 0.0 0.2 48384 2240 ? S 11:26 0:00 nginx: worker process
root 15730 0.0 0.0 112676 984 pts/0 R+ 11:38 0:00 grep --color=auto nginx


测试首页文件

Nginx Web服务默认首页文档存储目录为/usr/local/nginx/html/,在此目录下默认有一个名为index.html的文件,使用客户端访问测试页面:

[root@client ~]# curl http://192.168.4.5 #curl是一个基于命令行的浏览器,显示出来的是网页代码



Welcome to nginx!



Welcome to nginx!

If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.



For online documentation and support please refer to
nginx.org.

Commercial support is available at
nginx.com.



Thank you for using nginx.




[root@client ~]#
#也可以利用浏览器输入: http:192.168.4.5 来查看

Nginx升级

升级类型:


    1.10 ?> 1.101.10 ?> 1.10 (在原来的版本增加一些功能)
    *滑升级Nginx在不停止的情况下升级软件版本

#编译新版本nginx软件
[root@proxy ~]# tar -zxvf nginx-1.12.2.tar.gz
[root@proxy ~]# cd nginx-1.12.2
[root@proxy nginx-1.12.2]# ./configure
> --prefix=/usr/local/nginx
> --user=nginx
> --group=nginx
> --with-http_ssl_module
[root@proxy nginx-1.12.2]# make


# 备份老的nginx主程序,并使用编译好的新版本nginx替换*姹
[root@proxy nginx-1.12.2]# mv /usr/local/nginx/sbin/nginx
>/usr/local/nginx/sbin/nginxold #备份原来的文件
[root@proxy nginx-1.12.2]# cp objs/nginx /usr/local/nginx/sbin/ //拷贝新版本
[root@proxy nginx-1.12.2]# make upgrade //升级
/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
sleep 1
test -f /usr/local/nginx/logs/nginx.pid.oldbin
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
[root@proxy ~]# /usr/local/nginx/sbin/nginx ?v //查看版本


Nginx配置解析
配置文件节结构


全局部分(用户名,日志,进程)
容器(http{虚拟主机:server}) #每一个server就是一个虚拟机主机网文件。以 {}结尾
网页默认是任何人都可以访问的



全局配置
http{
…………
server{
listen 80 ; # 端口
server_name localhost ; # 名称
root html ; 网页位置(这是相对软件的相对路径) { usr/local/html }
}
}
}

全局选项
user nginx; #进程所有者
worker_proccesses 1;

三种模式虚拟主机

#基于域名的虚拟主机
server{
listen 80;
server_name web1.lij.com; #域名
}
server{
listen 8090;
server_name web1.lij.com; #域名
}

#基于端口的虚拟主机
server{
listen 8080; #端口
server_name web1.plj.com #域名
}
server{
listen 8080;
server_name web1.plj.com #域名
}

#基于IP的虚拟主机
server{
listen 192.168.3.30:80 #端口
server_name web1.plj.com #域名
}
server{
listen 192.168.3.20:80
server_name web1.plj.com
}


通过调整Nginx服务端配置,实现以下目标:

    访问Web页面需要进行用户认证用户名为:tom,密码为:123456

#模板配置文件框架如下:
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
全局配置(用户名,日志,进程)
http{
server{
listen 80;
server_name localhost;
root html;
}
server{
listen 80;
server_name www.xyz.com;
root www;
}
}

通过Nginx实现Web页面的认证,需要修改Nginx配置文件,在配置文件中添加auth语句实现用户认证。最后使用htpasswd命令创建用户及密码即可。


[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
auth_basic "Input Password:"; //认证提示符
auth_basic_user_file "/usr/local/nginx/pass"; #认证密码文件,可以创建这个用户
location / {
root html; #路径是相对软件的路径来写的,nginx的安装路径是:/usr/local/nginx
index index.html index.htm;
}
}

----------------------------------------------------------------------------
#完成后,利用yum安装http-tools
#然后利用htpasswd来创建tom用户
[root@proxy ~]# yum -y install httpd-tools
[root@proxy1 nginx-1.12.2]# htpasswd -c /usr/local/nginx/pass tom //创建密码文件
New password:
Re-type new password:
Adding password for user tom
[root@proxy1 nginx-1.12.2]# cat /usr/local/nginx/pass
tom:$apr1$P5TBtaJA$kcnGZ4/2wAwaGJI7BZny01
#注意:这条不能执行第二次,不然会把原来的用户给删除,若需要出追加用户,只需要把 ==-c== 去掉。 第一次创建猜要加 -c
#Eg:
[root@proxy1 nginx-1.12.2]# htpasswd /usr/local/nginx/pass dc //追加用户,不使用-c选项
New password:
Re-type new password:
Adding password for user dc
[root@proxy1 nginx-1.12.2]# cat /usr/local/nginx/pass
tom:$apr1$P5TBtaJA$kcnGZ4/2wAwaGJI7BZny01
dc:$apr1$D1YNpkCL$h3XGexe9pD8xMotrVxKpM/

#*鬘ginx服务
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload //重新加载配置文件
#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

[root@proxy1 nginx-1.12.2]# ls /usr/local/nginx/
client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp

    客户端测试

#登录192.168.4.10客户端主机进行测试 如果使用firefox火狐浏览器,
#注意在ssh远程的时候一定要加-X选项。 或者直接使用真实主机的火狐也可以。
[root@client ~]# firefox http://192.168.4.5 //输入密码后可以访问

错误日志文件路径:[root@proxy1 nginx-1.12.2]# tail /usr/local/nginx/logs/error.log


基于域名的虚拟主机

3.1 问题
沿用练*二,配置基于域名的虚拟主机,实现以下目标:
实现两个基于域名的虚拟主机,域名分别为www.a.com和www.b.com
对域名为www.a.com的站点进行用户认证,用户名称为tom,密码为123456
3.2 方案

修改Nginx配置文件,添加server容器实现虚拟主机功能;对于需要进行用户认证的虚拟主机添加auth 认证语句。
虚拟主机一般可用分为:基于域名、基于IP和基于端口的虚拟主机。
3.3 步骤
实现此案例需要按照如下步骤进行。

修改配置文件 :/usr/local/nginx/conf/nginx.conf

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80; #端口
server_name www.a.com; #域名
auth_basic "Input Password:"; #认证提示符
auth_basic_user_file "/usr/local/nginx/pass"; #认证密码文件
location / {
root html; #指定网站根路径
index index.html index.htm;
}

}
… … #这个可以在配置文件的后面可以找到。
server {
listen 80; #端口
server_name www.b.com; #域名
location / {
root www; #指定网站根路径 需要自己创建,注意:该路径是相对与软件安转路径
index index.html index.htm; #有限查找的文件后缀
}
}
-------------------------------------------------------------
#创建网站根目录及对应首页文件
[root@proxy ~]# mkdir /usr/local/nginx/www
[root@proxy ~]# echo "www" > /usr/local/nginx/www/index.html
#*鬾ginx服务
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload
#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
```

拓展:如果我们在我网页上显示中文,可以在我们的配置文件中,添加 **charset utf-8;** 就可以显示中文了,不然会显示显示乱码

扩展课外实验:其他类型的虚拟主机

#基于端口的虚拟主机(参考模板)
server {
listen 8080; //端口
server_name web1.example.com; //域名
......
}
server {
listen 8000; //端口
server_name web1.example.com; //域名
.......
}


#基于IP的虚拟主机(参考模板)
server {
listen 192.168.0.1:80; //IP地址与端口
server_name web1.example.com; //域名
... ...
}
server {
listen 192.168.0.2:80; //IP地址与端口
server_name web1.example.com;
... ...
}


SSL虚拟主机
沿用练*三,配置基于加密网站的虚拟主机,实现以下目标:

    域名为www.c.com该站点通过https访问通过私钥、证书对该站点所有数据加密

源码安装Nginx时必须使用 ?with-http_ssl_module 参数,启用加密模块,对于需要进行SSL加密处理的站点添加ssl相关指令(设置网站需要的私钥和证书)。

加密算法一般分为对称算法、非对称算法、信息摘要。
对称算法有:AES、DES,主要应用在单机数据加密。百度百科
非对称算法有:RSA、DSA,主要应用在网络数据加密。百度百科
信息摘要:MD5、sha256,主要应用在数据完整性校验。



[root@proxy1 ~]# md5sum anaconda-ks.cfg
81a24d454319c2a5b8b806828e370367 anaconda-ks.cfg
[root@proxy1 ~]# mv anaconda-ks.cfg a.txt
[root@proxy1 ~]# md5sum a.txt
81a24d454319c2a5b8b806828e370367 a.txt
#md5值跟 文件名,权限、 时间无关,只要内容被修改了,md5值才会被修改。用于数据完整性校验。



操作

步骤一:配置SSL虚拟主机
#生成私钥与证书
[root@proxy ~]# cd /usr/local/nginx/conf #默认nginx会到这个目录读取证书
[root@proxy ~]# openssl genrsa > cert.key #生成私钥
[root@proxy ~]# openssl req -new -x509 -key cert.key > cert.pem #生成证书,#rep请求申请证书,
#回车之后,需要做一些问题:第一个问题提问是那个国家的,其它的就可以任意写了。
#修改Nginx配置文件,设置加密网站的虚拟主机
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
… …
server {
listen 443 ssl;
server_name www.c.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 html;
index index.html index.htm;
}
}
#*鬾ginx服务
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload
#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

验证

# 修改客户端主机192.168.4.10的/etc/hosts文件,进行域名解析
[root@client ~]# vim /etc/hosts
192.168.4.5 www.c.com www.a.com www.b.com
# 登录192.168.4.10客户端主机进行测试
[root@client ~]# firefox https://www.c.com //信任证书后可以访问


这是我这几天的学*笔记,希望对大家有帮助。写得不好,大家见谅



友情链接: