Nginx基础、安装、配置与程序上线

Nginx基础、安装、配置与程序上线

Nginx是一个开源且高性能、可靠的HttpWeb服务、代理服务。
开源: 直接获取源代码
高性能: 支持海量并发
可靠: 服务稳定

nginx+lua 可实现waf防火墙 (7层应用层防火墙 http://)
传统防火墙工作在四层tcp/udp (22|80)
1.花钱解决问题()
2.自己解决问题(浪费时间、没有上浮空间、)

为什么选择 Nginx

1.Nginx非常轻量

1.功能模块少(源代码仅保留http与核心模块代码,其余不够核心代码会作为插件来安装)
2.代码模块化(易读,便于二次开发,对于开发人员是非常友好)

2.互联网公司都选择Nginx

1.技术成熟, 大公司都选择Nginx
2.统一技术选型工具Nginx, 降低维护成本,减少故障几率。
3.Nginx涉足场景较多,技术更新成本低。

3.Nginx采用Epool网络模型, Apache采用Select模型。

Select: 当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能低下。
Epool: 当用户发起请求,epool模型会直接进行处理,效率高效,并无连接限制。

4.Nginx 应用场景

静态处理(mp4|html|png|jpg)  -> 服务端存放的是什么,客户端浏览器就展示什么
反向代理
负载均衡
代理缓存()
访问限制(tcp连接数、http请求数)
访问认证(用户和密码、来源IP)
安全防护(waf防火墙,使用lua实现的,花钱买服务,花钱买经验)

5.Nginx安装

1.epel仓库=>Nginx(1.版本低 2.配置文件不一样)
2.源码编译=>Nginx(1.复杂   2.企业不使用)
3.官方仓库=>Nginx)(√1.版本较新 2.安装简单 3.配置不复杂)

1.配置Nginx官方的仓库

[root@web01 ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

2.安装Nginx【一定确认是通过官方的仓库安装上】

[root@web01 ~]# yum install nginx -y

Nginx基础、安装、配置与程序上线_第1张图片

3.检查版本【1.14.0】

[root@web01 ~]# nginx -v
nginx version: nginx/1.14.0

4.查看nginx编译的参数

nginx -V

5.编译参数越多越好,还是越少越好?

源码编译好了,做成的rpm包
越少:功能少,后期可维护性差
越多:功能全,覆盖广,可维护性强

Nginx配置文件

Nginx主配置文件/etc/nginx/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的。一般,每个区块以一对大括号{}来表示开始与结束。
Nginx基础、安装、配置与程序上线_第2张图片

1.CoreModule 核心模块
2.EventModule 事件驱动模块
3.HttpCoreModule http内核模块

需了解扩展项

CoreModule层下可以有Event、HTTP
HTTP模块层允许有多个Server层, Server主要用于配置多个网站
Server层又允许有多个Location, Location主要用于定义网站访问路径

例:default.conf内容

[root@web01 ~]# cat /etc/nginx/nginx.conf 
user  nginx;                                # 运行nginx程序的用户
worker_processes  1;                        # 运行的进程数量
error_log  /var/log/nginx/error.log warn;   # 错误日志
pid        /var/run/nginx.pid;              # 存放nginx进程运行的pid

events {                                    # 事件模块开始
    worker_connections  1024;               # worker进程的最大连接数
    use epool;                              # 事件使用的模型(默认epool)
}                                           # 事件模块结束

http {                                      # http开始
    include       /etc/nginx/mime.types;    # 包含流媒体类别
    default_type  application/octet-stream; # 默认类型
    
    # 定义日志的格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    
    # 访问日志存放的路径【main是日志的格式】
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;                  # 长连接
	#gzip  on;                              # 压缩
    include /etc/nginx/conf.d/*.conf;       # 所有的conf结尾的文件都被包含起来
    
    server {                                # 我要定义一个网站【博客】
    listen       80;                        # 监听80端口
    server_name  localhost;                 # 对应的域名
    
    location / {                            # 用户请求域名时,默认匹配的规则
        root   /usr/share/nginx/html;       # 网站根目录
        index  index.html index.htm;        # 返回的默认页面
    }
 
    error_page   500 502 503 504  /50x.html; # 定义错误页面的
    }
}

部署一个站点:

1.对应的nginx配置文件

[root@web01 conf.d]# cat /etc/nginx/conf.d/oldboy_game.conf 
server {
	listen 80;
	server_name    game.oldboy.com;

	location / {
		root       /oldboy_code;
		index      index.html;
	}
}

2.对应的源代码文件【手动-太low】(与配置文件中定义内容及路径必须一致)

[root@web01 conf.d]# mkdir /oldboy_code
[root@web01 conf.d]# cd /oldboy_code/
[root@web01 oldboy_code]# rz  html5.zip
[root@web01 oldboy_code]# unzip html5.zip
[root@web01 oldboy_code]# pwd
/oldboy_code
[root@web01 oldboy_code]# ls
ceshi  game  html5.zip  img  index.html  readme.txt

Nginx基础、安装、配置与程序上线_第3张图片

3.检查nginx的语法

[root@web01 oldboy_code]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

4.重载Nginx【reload|restart】

[root@web01 oldboy_code]# #nginx -s reload (reload重载相对平滑,但个别情况会导致程序起不来)
[root@web01 oldboy_code]# systemctl reload nginx

5.如何访问:

    1.通过服务器的IP直接访问:10.0.0.7
    2.通过域名方式访问
        Windows:   C:\Windows\System32\drivers\etc\hosts 文件
        Mac:       sudo vim /etc/hosts
        10.0.0.7   game.oldboy.com
    3.使用ping命令测试域名解析是否正常

你可能感兴趣的:(技术分享)