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网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
• 内存:建议8G以上
• 磁盘:建议使用SSD
• CPU:4核以上主流即可
• 安装使用简单
• 使用于传统公司
• 适用于VPS
• 适用于高性能服务器部署
准备:
• Vmware、Xshell 7、Xftp 7
• CentOS7.6镜像
安装与配置操作系统:
• 配置虚拟机上网
• 配置静态ip地址
遇到问题的时候可以从以下几个方面着手,无非就是配置出错或者版本不匹配的问题。
• Vmware中网关是否正确
• 直接ping ip是否能通(物理连接排查)
• 使用和老师一样版本的软件
• 卸载重装最快
• 常用版本分为四大阵营
• Nginx开源版http://nginx.org/
免费开源,但是功能只有一些核心功能,需要某些功能的话需要自己在第三方库下载。
• Nginx plus 商业版https://www.nginx.com
收费但是功能齐全,服务优良(公司可以权衡成本与收益后看用开源版还是商业版)
• Openrestyhttp://openresty.org
基于lua脚本的一款。
• Tenginehttp://tengine.taobao.org/
淘宝开源出来的。
直接去上面四个链接下载自己想要的版本
然后使用xtf或者其他工具将其上传到虚拟机内(这里推荐给他在创建一个文件夹)
执行以下命令的前提是nginx压缩包在下列nginx文件夹内
mkdir /usr/local/nginx
cd /user/local/nginx
tar -zxvf nginx-1.23.2.tar.gz
./configure --prefix=/usr/local/nginx
编译安装nginx需要使用
yum install -y gcc
nginx的http模块使用pcre来解析正则表达式,需要在linux上安装pcre库
yum -y install pcre-devel
安装zlib库,nginx使用zlib对http包的内容进行gzip
yum install -y zlib zlib-devel
装openssl库,让 nginx 支持 https(即在ssl协议上传输http)
yum install ‐y openssl openssl‐devel
依赖检查成功的结果。
make
make install
cd /usr/local/nginx/sbin
./nginx
在外部访问
其他一些命令
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload 重新加载配置
关闭防火墙 systemctl stop firewalld.service
禁止防火墙开机启动 systemctl disable firewalld.service
放行端口 firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙 firewall-cmd --reload
这里注意保持路径的一直性
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重新加载系统服务
systemctl daemon-reload
启动服务
systemctl start nginx.service
开机启动
systemctl enable nginx.service
• 目录
[root@MyLinux nginx]# tree
.
├── client_body_temp
├── conf //用来存放配置文件
│ ├── fastcgi.conf
│ ├── fastcgi.conf.default
│ ├── fastcgi_params
│ ├── fastcgi_params.default
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types//规定了返回的文件后缀名对应的响应类型(直接展示还是直接下载?)
│ ├── mime.types.default
│ ├── nginx.conf//核心配置文件(可以用来管理其余的配置文件)
│ ├── nginx.conf.default
│ ├── scgi_params
│ ├── scgi_params.default
│ ├── uwsgi_params
│ ├── uwsgi_params.default
│ └── win-utf
├── fastcgi_temp
├── html //用来存放页面(默认是这里可以进行修改)
│ ├── 50x.html//服务器错误页面
│ └── index.html//主页html
├── logs//日志文件存放的地方
│ ├── access.log//普通进程日志文件
│ └── error.log//错误日志文件
├── sbin//存放nginx的主程序
• 更改默认页
• 基本运行原理
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
worker_processes
worker_processes 1; 默认为1,表示开启一个业务进程
worker_connections
worker_connections 1024; 单个业务进程可接受连接数
include mime.types;
include mime.types; 引入http mime类型
default_type application/octet-stream;
default_type application/octet-stream; 如果mime类型没匹配上,默认使用二进制流的方式传输。
sendfifile on;
sendfile on; 使用linux的 sendfile(socket, file, len) 高效网络传输,也就是数据0拷贝。
nginx应用接收到网络上的请求之后,直接将信号发送给网络接口缓存(直接从网络已接口读数据响应出去)
以下就是两个主机,一个是aa.aiecp.com,另一个是hh.aiecp.com。使用这两个域名可以将用户的请求分发到不同的路径之下。
server {
listen 80; 监听端口号
server_name aa.aiecp.com; 主机名
location / { 匹配路径(这里是相对于nginx安装目录来说的)
root html; 文件根目录
index index.html index.htm; 默认页名称
}
#发生错误直接定位到50.html页面(找不到就去html文件夹下找)
error_page 500 502 503 504 /50x.html; 报错编码对应页面
location = /50x.html {
root html;
}
}
server {
listen 80; 监听端口号
server_name hh.aiecp.com; 主机名
location / { 匹配路径(这里是相对于nginx安装目录来说的)
root html; 文件根目录
index index.html index.htm; 默认页名称
}
#发生错误直接定位到50.html页面(找不到就去html文件夹下找)
error_page 500 502 503 504 /50x.html; 报错编码对应页面
location = /50x.html {
root html;
}
}
后续:虚拟主机的配置