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网站用户有很多,例如:新浪、网易、 腾讯等。
nginx_第1张图片

2.Nginx和apache对比的优点

nginx_第2张图片

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

nginx_第3张图片

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虚拟主机

nginx_第4张图片

在Windows 系统测试
nginx_第5张图片

nginx_第6张图片
nginx_第7张图片

2.基于IP地址的访问控制

nginx_第8张图片

nginx_第9张图片

nginx_第10张图片

3.基于端口的访问控制

nginx_第11张图片

nginx_第12张图片

nginx_第13张图片

总结

你可能感兴趣的:(nginx,服务器,运维)