nginx基础

nginx基础

1. nginx安装

1.1 常用版本

  • Nginx开源版:http://nginx.org/
  • Nginx plus商业版:https://www.nginx.com
  • Openresty:http://openresty.org
  • Tengine:http://tengine.taobao.org/
  • lnmp集成运行环境:oneinstack.com

1.2 下载nginx常用版

下载nginx-1.20.2.tar.gz文件,并解压指定目录:tar -zxvf nginx-1.20.2.tar.gz -C /export/server/
安装gcc:yum install -y gcc
安装perl库:yum install -y pcre-devel
安装zlib库:yum install -y zlib zlib-devel
使用configure方式配置nginx,安装在指定位置:./configure --prefix=/export/server/nginx
编译:make
安装:make install

1.3 启动Nginx

cd /export/server/nginx/sbin

./nginx 启动
./nginx -s stop 快速关闭
./nginx -s quit 优雅关闭
./nginx -s reload 重新加载配置

1.4 关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

1.5 安装成系统服务

创建脚本:vi /usr/lib/systemd/system/nginx.service

重新加载系统服务:systemctl -daemon-reload
启动服务:systemctl start nginx.service
开机自启:systemctl enable nginx.service

2. nginx介绍

2.1 基础使用-目录结构

conf:配置文件,html:静态文件(html,css),sbin:nxinx主程序

2.2 基础运行原理

nginx基础_第1张图片
多进程来完成用户请求,主进程master负责协调子进程worker读取配置文件和响应请求。

2.2 nginx配置文件

worker_processes  1;  #默认1,表示开启一个业务进程
events {
    worker_connections  1024;  #单个业务进程可接受连接数
}
http {
    include       mime.types;  #引入http mime类型(具体的文件类型,用于前端判断是什么文件),在conf中可查看详情
    default_type  application/octet-stream;  #如mime类型没匹配上,使用二进制流方式传输
    sendfile        on;  #使用linux的sendfile(socket,file,len)高效网络传输,即数据0拷贝
    keepalive_timeout  65;
    #虚拟主机
    server { #一个server代表一个主机
        listen       80;
        server_name  localhost;  #域名或主机名
        location / {  #uri资源
            root   html;  #用于与uri匹配的相对路径(对nginx路径)
            index  index.html index.htm;  #默认页
        }
        error_page   500 502 503 504  /50x.html;  #服务器错误转发页面
        location = /50x.html {
            root   html;
        }
    }
}

3 虚拟主机与域名解析

3.1 域名、dns、ip地址的关系,浏览器、nginx与http协议

nginx基础_第2张图片

3.2 虚拟主机原理,域名解析,反向代理,负载均衡

把一台主机共享出来,一个ip对应多个域名。由nginx判断访问的具体域名指向不同站点的目录。
windows本机测试:C:\Windows\System32\drivers\etc目录下修改hosts(管理员权限打开)
centos7yum安装ngixn默认配置文件地址:cd /etc/nginx/
获取通过find / -name nginx.conf 查找nginx目录

worker_processes 1;
events {worker_connections  1024;}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
	# 反向代理+负载均衡(weight代表权重,down代表不参与,backup:备用机)
    upstream httpds{
        server 192.168.88.88:89 weight=8 down;  #代理本机89端口
        server 192.168.88.111:80 weight=2; #代理集群中子服务器的80端口
        server 192.168.88.88:88 weight=1 backup;  #代理本机88端口
    }   
    server{
        listen 88;
        server_name localhost;
        location / {
            root /www/vod;
            index index.html index.html;
        }   
        error_page 500 502 503 504 /50x.html;
        location = /50x.html { 
            root html;
        }   
    }   
    server{
        listen 89;
        server_name localhost;
        location / {
            root /www/www;
            index index.html index.html;
        }   
        error_page 500 502 503 504 /50x.html;
        location = /50x.html { 
            root html;
        }   
    }
     server{
        listen 80;
        server_name localhost;
        location / {
           proxy_pass http://httpds;  #反向代理
        }  
        error_page 500 502 503 504 /50x.html;
        location = /50x.html { 
            root html;
        }   
    }   

负载均衡策略:
weight(权重),ip_hash(基于iphash),least_conn(最少连接访问),url_hash(url转发),fair(根据响应时间转发)
注意:weight策略不会保持会话

3.3 动静分离,URLRwrite

静态文件前置到nginx本地。
Urlrewrite实现URL重写指令:
rewrite [flag]
rewirte参数标签段位置:server,location,if
flag标记说明:
last本规则匹配后,继续向下匹配新的location uri规则
break本规则匹配完终止
redirect返回302临时重定向,浏览器地址会显示跳转后的url地址
permanment返回301永久重定向,浏览器显示跳转后的url地址

location / {
	rewrite ^/([0-9]+).html$ /index.jsp?pageNum=2 break;  #url重写,隐藏真实请求pageNum=2
	proxy_pass http://tomcat;  #可配合upstream httpds做负载均衡
}
location ~*(js|img|css) {  //通配符
	root html;
	index index.html index.html;
}

3.4 防盗链

http协议中的referer:在第二次请求本站点时请求头携带referer参数判断是否当前主机。
valid_referers none | blocked | server_names | strings …;

  • none检测referer头域不存在的情况
  • blocked检测referer头域值被防火墙或代理删除或伪装的情况。不能以http://或https://开头
  • server_names设置一个或多个URL,检测referer头域值是否是这些URL中的某一个
location ~*/(js|img|css){
	valid_referers 192.168.88.101;  #检测referers来源网址
	if($invalid_referer) {  ##无效的引用返沪403
		retrurn 403;
	}
}

使用浏览器或curl检测:
-e:引用信息 -I:只返回响应头信息
带引用:curl -e “http://baidu.com” -I http://192.168.88.101/img/log.png
返回错误页面修改:

error_page 401 /401.html;
location = /401.html {
	root.html;
}

整合rewrite返回报错图片:

	valid_referers none 192.168.88.101;
	if($invalid_referer) {  ##无效的引用返沪403
		retrurn ^/ /img/x.png break;
	}

3.5 高可用

keepalived实现虚拟ip在多台机器上漂移。
安装:yum install -y keepalived
配置:/etc/keepalived/keepalivedconf
master配置:

global_defs {
	route_id lb111
}
vrrp_instance xuyu {  #实例名称
	state MASTER  #master
	interface ens33  #ip addr网卡名称
	virtual route_id 51
	priority 100  #竞选优先级
	advert_int 1  #检测间隔时间
	auhentication {  #组认证
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress{
		192.168.88.200  #漂移ip地址
	}
}

slave配置

global_defs {
	route_id lb110
}
vrrp_instance xuyu {  #实例名称
	state BACKUP
	priority 50  #竞选优先级
	...其余配置同上
}

3.6 Https证书配置

不安全的Http协议:
对称加密:先拿到解密算法,再进行传输
非对称加密:先走443端口拿到公钥,再传输密文(公钥+算法),对端再拿私钥解开得到明文,回程则私钥加密,公钥解密,且公钥加密,公钥解不开
Https原理:

  • CA机构
  • 证书
  • 客户端(浏览器)
  • 服务端
    证书自签名:
    OpenSSL(SSL协议库,应用程序和密码算法库)
    图形化工具XCA
    在线证书申请:
    先申请证书-再上传到nginx目录下-证书安装
nginx.conf证书安装:
server {
	listen 443 ssl;
	server_name aa.abc.com;
	ssl_certificate			xxx_www.aric.com.pem;
	ssl_certificate_key	xxx_www.aric.com.key;
}

http协议跳转https:

server {
	listen 80;
	server_name www.aric.com aric.com;
	return 301 https://$server_name$request_uri;
	root html;
}

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