nginx
系列文章目录
`
文章目录
- 系列文章目录
- 一、Nginx
- 1.什么是nginx?
- 2.Nginx和apache对比的优点
- 3.Nginx应用场景?
- 4.nginx命令
- 5.Nginx 服务器
- 二、静态网页、动态网页
- 1.搭建Nginx服务
- 1关闭防火墙,将安装的Nginx软件包安装到opt目录下
- 2 安装依赖包
- 3创建用户、组,以便于更好的管理
- 4 编译安装Nginx
- 5 创建软连接并启动
- 6.停止Nginx
- 7添加Nginx系统服务
- 3
- 1.基于域名的Nginx虚拟主机
- 2.基于IP地址的访问控制
- 3.基于端口的访问控制
- 总结
一、Nginx
1.什么是nginx?
Nginx是一个 轻量级/高性能的反向代理Web服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。他实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中国使用nginx网站用户有很多,例如:新浪、网易、 腾讯等。
2.Nginx和apache对比的优点
3.Nginx应用场景?
1.http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
2.虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。
3.反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。
4.nginx中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。
4.nginx命令
-V 查看nginx版本信息和配置选项
-t 测试配置是否正确,只测试配置,并不启动nginx
-s signal 给nginx主进程发送信号:stop、quit、reopen、reload(重新加载配置文件,让修改立刻生效,并不重启服务)
-c filename 指定配置文件路径,默认是/etc/nginx/nginx.conf
5.Nginx 服务器
正常运行过程中:
多进程:一个 Master 进程、多个 Worker 进程
Master 进程:管理 Worker 进程
1.对外接口:接收外部的操作(信号)
2.对内转发:根据外部的操作的不同,通过信号管理 Worker
3.监控:监控 worker 进程的运行状态,worker 进程异常终止后,自动重启 worker 进程
Worker 进程:所有 Worker 进程都是平等的
1.实际处理:网络请求,由 Worker 进程处理
2.Worker 进程数量:在 nginx.conf 中配置,一般设置为核心数,充分利用 CPU 资源,同时,避免进程数量过多,避免进程竞争 CPU 资源,增加上下文切换的损耗。
二、静态网页、动态网页
静态网页
静态网页不能简单地理解成静止不动的网页,他主要指的是网页中没有程序代码,只有HTML(即:超文本标记语言),一般后缀为.html,.htm,或者.xml等。虽然静态网页的页面一旦做成,内容就不会再改变了。但是,静态网页也包括一些能动的部分,这些主要是一些GIF动画等。
动态网页
动态网页,与网页上的各种动画、滚动字幕等视觉上的动态效果没有直接关系,动态网页也可以是纯文字内容的,也可以是包含各种动画的内容,这些只是网页具体内容的表现形式,无论网页是否具有动态效果,只要是采用了动态网站技术(如PHP、ASP、JSP等)生成的网页都可以称为动态网页。动态网页可以根据不同的用户请求,时间或者环境的需求动态的生成不同的网页内容,并且动态网页一般以数据库技术为基础,可以大大降低网站维护的工作量
1.搭建Nginx服务
1关闭防火墙,将安装的Nginx软件包安装到opt目录下
#关闭防火墙
[root@wj ~]#: systemctl stop firewalld
[root@wj~]#: systemctl disable firewalld
2 安装依赖包
#安装依赖包
[root@wj ~]#: yum -y install pcre-devel zlib-devel gcc gcc-c++ make
3创建用户、组,以便于更好的管理
(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)Nginx服务程序默认以匿名运行
[root@wj ~]#: useradd -M -s /sbin/nologin nginx
4 编译安装Nginx
[root@wj~]#: cd /opt/
[root@wjopt]#: ls
nginx-1.12.2.tar.gz rh
[root@wj opt]#: tar zxvf nginx-1.12.2.tar.gz
[root@wj opt]#: cd nginx-1.12.2/
[root@wj nginx-1.12.2]#: ./configure \
> --prefix=/usr/local/nginx \ #指定Nginx的安装路径
> --user=nginx \ #指定用户名
> --group=nginx \ #指定组名
> --with-http_stub_status_module #启动http_stub_status_module模块,支持状态统计
#安装
[root@wj nginx-1.12.2]#: make -j4 && make install
5 创建软连接并启动
#创建软连接,让系统识别Nginx命令
[root@mayinbin3 nginx-1.12.2]#: ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
#检查文件是否正确
[root@mayinbin3 nginx-1.12.2]#: 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
#启动nginx
[root@wj nginx-1.12.2]#: nginx
#查看是否启动nginx
[root@wj nginx-1.12.2]#: netstat -antulp|grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
41590/nginx: master
#如果遇到占用80端口的情况我们可以先查看pid号
[root@wj nginx-1.12.2]#: cat /usr/local/nginx/logs/nginx.pid
#在用kill -3命令暂停他就可以启动了
6.停止Nginx
#首先查看nginx的PID号
[root@wj nginx-1.12.2]#: cat /usr/local/nginx/logs/nginx.pid
41590
#停止nginx
[root@wj nginx-1.12.2]#: kill -3 41590
[root@wj nginx-1.12.2]#: netstat -antulp|grep nginx
[root@wjnginx-1.12.2]#:
这时候就查不到进程号了
7添加Nginx系统服务
[root@wj nginx-1.12.2]#: vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#赋予权限并启动服务
[root@wj nginx-1.12.2]#: chmod 754 /lib/systemd/system/nginx.service
[root@wj nginx-1.12.2]#: systemctl start nginx.service
#再次查看80端口
[root@wj nginx-1.12.2]#: lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 46463 root 6u IPv4 161978 0t0 TCP *:http (LISTEN)
nginx 46464 nginx 6u IPv4 161978 0t0 TCP *:http (LISTEN)
3
1.基于域名的Nginx虚拟主机
在Windows 系统测试