@[TOC](Nginx 功能介绍 编译安装 开机启动 小节1)
nginx介绍
- nginx:engine X,是由1994年毕业于俄罗斯国立莫斯科鲍曼科技大学的同学为俄罗斯rambler.ru公司开发的,开发工作最早从2002年开始,第一次公开发布时间是2004年10月4日,版本号是0.1.0
- nginx有商业版和社区版,2019年3月11日F5 Networks 6.7亿美元的价格收购
- nginx 是免费,开源,高性能的HTTP和反向代理服务器,邮件代理服务器,通用TCP/UDP代理服务器
- 解决C10K问题(10K Connections)
- 官网:nginx.org
- nginx的其它的二次发行版:
- Tengine:由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。从2011年12月开始,Tengine成为一个开源项目,官网 tengine.taobao.org/
- OpenResty:基于 Nginx 与 Lua 语言的高性能 Web 平台,章亦春官网:openresty.org/cn/
- 特性:
- 模块化设计,较好的扩展性
- 高可靠性
- 支持热部署:不停机更新配置文件,升级版本,更换日志文件
- 低内存消耗:10000个keep-alive连接模式下的非活动连接,仅需2.5M内存
- event-driven,aio,mmap,sendfile
- 基本功能:
- 静态资源的web服务器
- http协议反向代理服务器
- pop3/imap4协议反向代理服务器
- FastCGI(LNMP),uWSGI(python)等协议 -模块化(非DSO),如zip,SSL模块
nginx的程序架构
- web服务相关的功能:
- 虚拟主机(server)
- 支持 keep-alive 和管道连接(共享TCP连接发起并发的HTTP请求)
- 访问日志(支持基于日志缓冲提高其性能)
- url rewirte
- 路径别名
- 基于IP及用户的访问控制
- 支持速率限制及并发数限制
- 重新配置和在线升级而无须中断客户的工作进程
- Memcached 的 GET 接口
- nginx的程序架构:
master/worker结构 > 一个master进程: 负载加载和分析配置文件、管理worker进程、平滑升级 > 一个或多个worker进程 处理并响应用户请求 > 缓存相关的进程 cache loader:载入缓存对象 cache manager:管理缓存对象
nginx模块
- nginx高度模块化,但其模块早期不支持DSO机制;1.9.11版本支持动态装载和卸载
- 模块分类:
核心模块:core module 标准模块: HTTP 模块:ngx_http_* HTTP Core modules 默认功能 HTTP Optional modules 需编译时指定 Mail 模块 ngx_mail_* Stream 模块 ngx_stream_* 第三方模块
yum安装
前提
| 名称 | 环境 | IP/GW | 安装方式 |
|---|---|---|---|
| nginx | Centos7 | 37.7/GW37.2 | YUM |
步骤
[root@nginx ~]# yum install nginx -y
[root@nginx ~]# rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx/fastcgi.conf
/etc/nginx/fastcgi.conf.default
/etc/nginx/fastcgi_params
/etc/nginx/fastcgi_params.default
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/mime.types.default
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default
/etc/nginx/scgi_params
/etc/nginx/scgi_params.default
/etc/nginx/uwsgi_params
/etc/nginx/uwsgi_params.default
/etc/nginx/win-utf
/usr/bin/nginx-upgrade
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx/modules
/usr/sbin/nginx
/usr/share/doc/nginx-1.20.1
/usr/share/doc/nginx-1.20.1/CHANGES
/usr/share/doc/nginx-1.20.1/README
/usr/share/doc/nginx-1.20.1/README.dynamic
/usr/share/doc/nginx-1.20.1/UPGRADE-NOTES-1.6-to-1.10
/usr/share/licenses/nginx-1.20.1
/usr/share/licenses/nginx-1.20.1/LICENSE
/usr/share/man/man3/nginx.3pm.gz
/usr/share/man/man8/nginx-upgrade.8.gz
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx/html/404.html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/en-US
/usr/share/nginx/html/icons
/usr/share/nginx/html/icons/poweredby.png
/usr/share/nginx/html/img
/usr/share/nginx/html/index.html
/usr/share/nginx/html/nginx-logo.png
/usr/share/nginx/html/poweredby.png
/usr/share/nginx/modules
/usr/share/vim/vimfiles/ftdetect/nginx.vim
/usr/share/vim/vimfiles/ftplugin/nginx.vim
/usr/share/vim/vimfiles/indent/nginx.vim
/usr/share/vim/vimfiles/syntax/nginx.vim
/var/lib/nginx
/var/lib/nginx/tmp
/var/log/nginx
/var/log/nginx/access.log
/var/log/nginx/error.log
#启动nginx服务
[root@nginx ~]# systemctl start nginx
#查看nginx服务端口号、默认端口号为'80'
[root@nginx ~]# ss -ntlp|grep nginx
LISTEN 0 128 *:80 *:* users:(("nginx",pid=10238,fd=6),("nginx",pid=10237,fd=6),("nginx",pid=10236,fd=6),("nginx",pid=10235,fd=6),("nginx",pid=10234,fd=6))
#修改网页信息
[root@nginx ~]# echo welcome to 7 > /usr/share/nginx/html/index.html
浏览器测试
nginx目录结构和命令
- ls /apps/nginx/
html是测试页,sbin是主程序
- ls /apps/nginx/sbin/
nginx 只有一个程序文件
- ls /apps/nginx/html/
50x.html index.html 测试网页
nginx:默认为启动nginx
-h 查看帮助选项 -V 查看版本和配置选项 -t 测试nginx语法错误 -c filename 指定配置文件(default: /etc/nginx/nginx.conf) -s signal 发送信号给master进程,signal:stop, quit, reopen, reload 示例: nginx -s stop 停止nginx nginx -s reload 加载配置文件 -g directives 在命令行中指明全局指令 -T 相当于把配置文件打开
官方yum源:nginx.org/en/linux_pa…
此处我们只要稳定版yum源即可、写到'/etc/yum.repos.d/*.repo'#稳定版 [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true #测试版 [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
Nginx编译安装
前提
| 名称 | 环境 | IP/GW | 安装方式 |
|---|---|---|---|
| nginx10 | Centos7 | 37.10/GW37.2 | 编译 |
步骤
#安装依赖包
[root@nginx10 ~]# yum install pcre-devel openssl-devel zlib-devel gcc -y
#创建用户
[root@nginx10 ~]# useradd -r -s /sbin/nologin nginx
[root@nginx10 ~]# cd /usr/local/src/
#下载
[root@nginx10 src]# wget http://nginx.org/download/nginx-1.16.0.tar.gz
[root@nginx10 src]# tar xvf nginx-1.16.0.tar.gz
[root@nginx10 src]# cd nginx-1.16.0/
#编译
[root@nginx10 nginx-1.16.0]# ./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
#安装
[root@nginx10 nginx-1.16.0]# make && make install
[root@nginx10 nginx-1.16.0]# tree /apps/nginx/
/apps/nginx/
├── 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
├── html <--网页目录
│ ├── 50x.html
│ └── index.html
├── logs
└── sbin
└── nginx <--主程序
4 directories, 18 files
[root@nginx10 nginx-1.16.0]# ln -s /apps/nginx/sbin/nginx /usr/sbin/
[root@nginx10 nginx-1.16.0]# ll /usr/sbin/nginx
lrwxrwxrwx 1 root root 22 Aug 5 18:16 /usr/sbin/nginx -> /apps/nginx/sbin/nginx
[root@nginx10 nginx-1.16.0]# ss -ntl |grep 80
[root@nginx10 nginx-1.16.0]# nginx
[root@nginx10 nginx-1.16.0]# ss -ntl |grep 80
LISTEN 0 128 *:80 *:*
浏览器测试(源码编译网站)
开机启动
#开机启动配置文件
vim /etc/rc.d/rc.local
/usr/sbin/nginx <--添加此行
#需要添加权限
chmod +x /etc/rc.d/rc.local