这篇文章主要讲解了“Nginx的详细安装步骤”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Nginx的详细安装步骤”吧!
专注于为中小企业提供成都网站制作、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业鹿城免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了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网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
搭建环境: Linux CentOS7
Nginx不支持yum安装,需要用到包(我这里用主线版本安装):
API http://nginx.org/download/nginx-1.17.4.tar.gz
依赖包: yum -y install gcc pcre-devel openssl-devel
在IP地址为192.168.109.190的主机上安装部署Nginx服务,并可以将Nginx服务器,要求编译时启用如下功能:
支持SSL加密功能
设置Nginx账户及组名称均为nginx
Nginx服务器升级到更高版本。
访问验证Nginx Web服务器:
[root@centos7~]# yum -y install gcc pcre-devel openssl-devel (我是最小化安装的系统需要把依赖包安装完整yum -y install gcc pcre pcre-devel openssl openssl-devel make automake autoconf) //安装依赖包
[root@centos7~]# useradd -s /sbin/nologin nginx //添加一个专用用户,添加参数-s后面补充
[root@centos7~]# tar -xzvf nginx-1.17.4.tar.gz
[root@centos7~]# cd nginx-1.17.4
[root@centos7 nginx-1.17.4]# ./configure \
> --prefix=/usr/local/nginx \ //指定安装路径
> --user=nginx \ //指定用户
> --group=nginx \ //指定组
> --with-http_ssl_module //开启SSL加密功能
[root@centos7 nginx-1.17.4]# make && make install //编译并安装
[root@centos7 nginx-1.17.4]#ls /usr/local/nginx/sbin/nginx //查看是否有这个目录,有则安装成功
补充(关于为何添加专用用户):
按照最小特权原则,需要给Nginx分配一个合适的权限,让其能够完成Web服务。
最小特权原则是系统安全中最基本的原则之一,它限制了使用者对系统及数据进行存取所需要的最小权限,既保证了用户能够完成所操作的任务,同时也确保非法用户或异常操作所造成的损失最小。必须保证Nginx使用一个专门的用户和用户组,不要使用系统预定义的账号。
因为只有root用户可以运行Nginx,DocumentRoot应该能够被管理Web站点内容的用户访问和使用Nginx服务器的Nginx用户和Nginx用户组访问。所以,如果希望“nginx”用户在Web站点发布内容,并且可以以httpd身份运行Nginx服务器,通常可以将这个用户添加到Nginx组里.
总言之,我们以root用户启用Nginx并以Nginx用户或组身份使用Nginx,因为如果不将root与Nginx用户分离,如使用者具备root权限,就可以通过Nginx软件的系统路径向上找到根,这是很危险的.
[root@centos7~]# /usr/local/nginx/sbin/nginx //启动服务
[root@centos7~]# /usr/local/nginx/sbin/nginx -s stop //关闭服务
[root@centos7~]# /usr/local/nginx/sbin/nginx -s reload //重新加载配置文件
[root@centos7~]# /usr/local/nginx/sbin/nginx -V //查看软件信息
[root@centos7~]# ln -s /usr/local/nginx/sbin/nginx /sbin //创建软链接,方便后期使用,直接输入nginx即可启动服务
netstat命令可以查看系统中启动的端口信息,该命令常用选项如下:
-a显示所有端口的信息
-n以数字格式显示端口号
-t显示TCP连接的端口
-u显示UDP连接的端口
-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口
-p显示监听端口的服务名称是什么(也就是程序名称)
nginx服务默认通过TCP 80端口监听客户端请求,观察通过TCP 80是否在被nginx占用,如果你的服务器还有其他的使用80端口的服务,如httpd,你就要关闭httpd,关闭进程 kill all -9 httpd
虚拟主机(英语:virtual hosting)或称 共享主机(shared web hosting),又称虚拟服务器,是一种在单一主机或主机群上,实现多网域服务的方法,可以运行多个网站或服务的技术。虚拟主机之间完全独立,并可由用户自行管理,虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器。
其技术是互联网服务器采用的节省服务器硬件成本的技术,虚拟主机技术主要应用于HTTP,FTP,EMAIL等多项服务,将一台服务器的某项或者全部服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬件资源。如果划分是系统级别的,则称为虚拟服务器。
虚拟主机一般可用分为:基于域名、基于IP和基于端口的虚拟主机。在这里我们配置使用基于域名的虚拟主机.
#案例1
实现两个基于域名访问的虚拟主机,域名分别是www.aa.com和www.bb.com
这里我们只配置最基本的功能,配置两个网站,网站aa使用默认的页面,网站bb新建一个index.html 放到目录www
mkdir /usr/local/nginx/www //创建目录www
echo "this is www.bb.com hell world!" > /usr/local/nginx/www/index.html //创建index.html文件并写入this is www.bb.com hell world!
vim /usr/local/nginx/conf/nginx.conf
修改如下:
user nginx nginx;
worker_processes 1;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80; //访问的端口
server_name www.aa.com; //访问的域名
location / {
root html; //指定网站根路径
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80; //端口
server_name www.bb.com; //域名
location / {
root www; //指定根路径,前面使用的是默认路径,这里指向我们创建的目录www
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
配置修改完成后,我们重启一下nginx
[root@centos7 ~]# nginx -s reload
绑定本地hosts文件进行测试:
访问www.aa.com显示默认nginx页面
访问www.bb.com显示我们配置的html页面:
关于nginx作为反向代理的配置还有很多种方式,之前已经说了基于域名,还有基于IP和域名加不同端口、IP加不同端口等配置
只需要修改配置文件中的listen和server_name这两个参数就可以
SSL(Secure Socket Layer),为Netscape所研发,用以保障在Internet上数据传输的安全,利用数据加密(Encryption)技术,可确保数据在网络上的传输过程中不会被截取及窃听。一般通用的规格为40 bit的安全标准,美国则已推出128 bit的更高安全标准,但限制出境。只要3.0版本以上的I.E.或Netscape浏览器即可支持SSL。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
通俗来讲,不使用SSL协议就不安全,如果简单的进行文件传输,当访问者输入账号密码给服务器后一切都是明文显示的,如果这时候有人抓包就可以看到文件的内容,使用SSL协议将数据加密,即使被抓包了也看不到文件的具体内容,极大提高的了安全性,尤其是涉及金钱交易的网站.
#案例2
实现一个基于https协议访问的SSL虚拟主机,并通过私钥、证书对该站点所有的数据加密
#加密算法:
#加密算法一般分为对称算法、非对称算法、信息摘要。
#对称算法有:AES、DES,主要应用在单机数据加密。
#非对称算法有:RSA、DSA,主要应用在网络数据加密。
#信息摘要:MD5、sha256,主要应用在数据完整性校验。
一般采用非对称算法RSA:
[root@centos7 conf]# openssl genrsa > cert.key //生成私钥,注意记录文件名称,在后续配置nginx配置文件时要使用
[root@centos7 conf]# openssl req -new -x509 -key cert.key > cert.pem //生成证书,注意记录文件名称,在后续配置nginx配置文件时要使用
修改nginx配置文件:
[root@centos7 conf]# vim nginx.conf
user nginx nginx;
worker_processes 1;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.cc.com;
return 301 https://$server_name$request_uri; //配置http访问www.cc.com的时候强制跳转到https的访问方式
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#HTTPS server
server {
listen 443 ssl;
server_name www.cc.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;
}
}
}
配置修改完成后保存,重启一下nginx
[root@centos7 conf]# nginx -s reload
修改本地hosts文件进行验证:
用google浏览器访问已经提示https不安全的网络连接,这个原因是我们配置的SSL文件是本地生成
非第三方官方认证,所以google浏览器会弹出这样的提示,我们只需要点高级,继续访问就可以了。
感谢各位的阅读,以上就是“Nginx的详细安装步骤”的内容了,经过本文的学习后,相信大家对Nginx的详细安装步骤这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!