nginx简介
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。
其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
nginx优缺点对比
优点:
1.nginx由C编写,同样的web服务器,占用的资源和内存低性能高。
2.当启动nginx服务器,会生成一个master进程,master进程会fork出多个worker进程,由worker线程处理客户端的请求。
4.nginx支持反向代理(用户有感知的访问叫正向代理如使用v-p-n访问youtube,用户无感知访问叫反向代理如负载均衡),支持7层负载均衡(拓展负载均衡的好处)。
5.nginx是异步非阻塞型处理请求,采用的epollandqueue模式,apache是阻塞型处理请求。
6.nginx处理静态文件速度快
7.nginx高度模块化,配置简单。
8.nginx是单进程多线程。
缺点:
1.动态处理差:nginx处理静态文件好,耗费内存少,但是处理动态页面则很鸡肋,现在一般前端用nginx作为反向代理抗住压力,apache作为后端处理动态请求。
2.rewrite弱:虽然nginx支持rewrite功能,但是相比于Apache来说,Apache比nginx 的rewrite 强大。
nginx安装方法
使用源码方式安装
使用wget命令下载安装包
wget http://nginx.org/download/nginx-1.8.1.tar.gz
安装依赖环境
[root@server ~]# yum install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel -y
创建nginx目录并解压
[root@server ~]# mkdir -p /var/temp/nginx
[root@server ~]# tar -zxvf nginx-1.8.1.tar.gz -C /var/temp/nginx/
开始编译,执行./configure
[root@server nginx]# cd /var/temp/nginx/nginx-1.8.1/
[root@server nginx-1.8.1]# ls
auto CHANGES.ru configure html Makefile objs src
CHANGES conf contrib LICENSE man README
[root@server nginx-1.8.1]# ./configure
编译安装
[root@server ~]# make && make install
这里我们发现无法直接启动nginx服务
需要写出具体的启动路径
[root@server ~]# systemctl restart nginx
Failed to restart nginx.service: Unit not found.
[root@server ~]# /usr/local/nginx/sbin/nginx
实现systemctl 直接启动
创建一个nginx.service文件
[root@server ~]# vim /usr/lib/systemd/system/nginx.service
[root@server ~]# cat /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp= true
[Install]
WantedBy=multi-user.target
赋予执行权限
在启动服务之前,需要先重载systemctl命令
[root@server ~]# chmod 755 /usr/lib/systemd/system/nginx.service
[root@server ~]# systemctl daemon-reload
这里我们发现还是没有启动成功,很有可能就是端口被占用的原因
[root@server ~]# systemctl restart nginx
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
编辑nginx配置文件 /usr/local/nginx/conf/nginx.conf
将80端口改为8080或其他端口都可
[root@server ~]# vim /usr/local/nginx/conf/nginx.conf
发现nginx成功启动
[root@server ~]# systemctl restart nginx
[root@server ~]# systemctl status nginx
● nginx.service - nginx
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2022-02-05 12:56:43 CST; 2min 14s ago
Process: 62986 ExecStop=/usr/local/nginx/sbin/nginx -s quit (code=exited, status=0/SUCCESS)
Process: 62990 ExecStart=/usr/local/nginx/sbin/nginx (code=exited, status=0/SUCCESS)
Main PID: 62991 (nginx)
Tasks: 2
CGroup: /system.slice/nginx.service
├─62991 nginx: master process /usr/local/nginx/sbin/nginx
└─62992 nginx: worker process
Feb 05 12:56:43 server systemd[1]: Starting nginx...
Feb 05 12:56:43 server systemd[1]: Started nginx.
nginx yum方式安装
我们完全可以采用更简单的方法安装nginx
首先安装epel源
[root@server ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@server ~]# yum clean all
[root@server ~]# yum install nginx
直接使用yum 就可以直接安转nginx
不用安装依赖也不需要自己编译创建
不用创建nginx.service文件
直接就可以使用
当然版本因源仓库固定无法更改。
下两篇会写到nginx的应用
感谢观看