Nginx 详解 20200310

Nginx

1.docker 安装Nginx

docker pull nginx


第一步:docker run -d -p 8888:80 --name nginx-use  --net host -v /Users/damon/Downloads/docker/nginx/www:/usr/share/nginx/html -v /Users/damon/Downloads/docker/nginx/logs:/var/log/nginx nginx
第二步:docker exec -it nginx /bin/bash (进入容器 获取文件)
第三步:cd /etc/nginx/ (这里主要获取配置文件路径的)
第四步:exit
第五步:cd /docker/nginx/conf/
第六步:docker cp 4aa7fdf3db6d:/etc/nginx/nginx.conf .
ps:文件copy成功后 把nginx容器先删除掉
第七步:docker rm -f nginx
第八步:docker run -d -p 8888:80 --name nginx-use  -v /Users/damon/Downloads/docker/nginx/www:/usr/share/nginx/html -v /Users/damon/Downloads/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /Users/damon/Downloads/docker/nginx/logs:/var/log/nginx nginx

在这里插入图片描述

2.nginx 常用命令

  • /usr/sbin/nginx
  • ./nginx -s stop 暴力停止nginx
  • ./nginx -s quit 退出
  • ./nginx 启动
  • ./nginx -s reload 重启
  • ./nginx -c conf/nginx1.conf 指定配置文件启动

3. nginx 虚拟主机配置

一台物理服务器上,划分多个区域,每个虚拟的区域都有自己的域名及空间

两个域名指向同一台主机

  • worker_processes 8 (工作进程数 通常为cpu核数的2倍)
  • worker_connections 204800
  • http 协议的相关配置
include mine.type; (http 支持的协议 text/html  applicaion/xhtml+xml....)
default_type  application/octet-stream(默认接收数据类型)

  • sendfile on
  • keeplive timeout
  • server 虚拟主机
  • listener 端口
  • server_name: 虚拟主机主机名称
  • location 目标目录前缀
  • root 目标目录
  • index 索引页
location /{
	root  html
	index index.html index.htm
}

-error_page 出现错误展示的页面

error_page 500  502 503 504 /50x.html
location= /50.html {
      root  html
}
  • 配置虚拟主机

    server {
      listener 80;
      server_name a.test.com;
      location /{
            root html/a;
      }
    }

    server {
      listener 80;
      server_name b.test.com;
      location /{
            root html/b;
            
      }
    }

Nginx 的location 配置详解



server {
 	listener 80;
	server_name  www.11autos.com;
	location /{
		root html/b;
		index index.html;
	}
}

  • location 语法规则
  • = 以xxx 开始的
server{
	listener 80
	server_name www.11autos.com
	
	location =/demo.html {
	root html_xj
	}
}

# http://www.11autos.com/demo.html   在html_xj 目录下寻找demo.html
  • ^~ 匹配路径
server{
	listener 80
	server_name www.11autos.com
	
	location ^~ /static_js/ {
	root html_js
	}

location ^~/static_css/ {
	root html_css
	}
}

# http://www.11autos.com/static_js/a.js  通过static 区分功能模块
# http://www.11autos.com/static_css/a.css 通过static 区分功能模块
# 用于静态资源配置

  • ~ 正则匹配
location ~ \.(jpg|png|gif)$ {
	root img
}

# 如果是以jpg/jpej/git 结尾的路径
  • ~* 不区分大小写的正则

location ~ * \.(jpg|peg|gif|png)$ {
	root img
}
  • /

反向代理

nginx + tomcat 实现反向代理

启动docker 安装多个tomcat 


docker pull tomcat:7

1. docker run -d --name tomat8081 -p 8081:8080 tomcat:7
2. docker run -d --name tomat8081 -p 8081:8080 tomcat:7
3. docker exec -it  tomcat8081 /bin/bash
4. exit
5. docker cp /User/test/HelloWorld.war tomcat8081:/usr/local/tomcat/webapps
6. docker cp /User/test/HelloWorld.war tomcat8082:/usr/local/tomcat/webapps
7. http://localhost:8081/HelloWorld
8. http://localhost:8082/HelloWorld

反向代理

  • cd /usr/local/nginx/conf
  • vi nginx.conf
server {
    listener 80;
	server_name www.11autos.com;
    location / {
    	proxy_pass http://192.168.1.1:8081
    }
}

负载均衡

  • cd /usr/local/nginx/conf
  • vi nginx.conf
server {
    listener 80;
	server_name www.11autos.com;
    location / {
    	proxy_pass http://tomcat_cluster;
    	index index.html

    }
}

upstream tomcat_cluster{
		server http://192.168.1.1:8081  weight=7;
		server http://192.168.1.1:8082  weight=3;
}

动静分离的架构设计

方案一

nginx多进程启动

www.11autos.com:8082充当静态服务器
server {
    listener 8082;
	server_name www.11autos.com;
    location / {
    	root static_res
    }
}
  • www.11autos.com:8080 充当动态服务器 nginx2.conf
  • nginx 做反向代理 www.11autos.com nginx.conf

模型二 页面静态化

nginx多进程启动

nginx1.conf http://192.168.1.10:8083   网页静态化主机
service{
	listener:8083
	server_name:192.168.1.10
	location /{
	    root  static_html
	}
}


nginx2.conf  192.168.1.10:8082  静态资源
server {
    listener 8082;
	server_name 192.168.1.10;
    location / {
    	root static_res
    }
}


nginx3.conf  192.168.1.10:8080 动态web服务器
server {
    listener 8080;
	server_name 192.168.1.10;
    location / {
    	root static_res
    }
}

nginx.conf 192.168.1.10:80  nginx 反向代理服务器
server{
    listener 80;
	server_name 192.168.1.10;

	# 静态请求
	location ~ *\.(jsp|do|action){
			proxy_pass http://tomcat_cluster;
	}
   #  非静态请求
	location ~ *\.(html|htm){
		#	root static_html; 由于在一台服务器上可以用这种方式
		# proxy_pass http://192.168.1.10:8083;
		proxy_pass http://tomcat_static;
		
	}
}
## 负载 动态
upstream tomcat_cluster{
 server http:192.168.1.10:8080 weight=10;
 server http:192.168.1.10:8081 weight=20;
}
## 负载静态
updatream tomcat_static{
server http:192.168.1.10:8083;
}

在这里插入图片描述

动静分离 模型三

在这里插入图片描述
静态化页面 中ajax请求 再搭建一台nginx处理

Nginx 负载均衡高可用

在这里插入图片描述

keepalived+nginx

在这里插入图片描述

nginx的rewrite

  • url 重写

rewrite 语法规则

可以是location 中 也可以是server中

server{
rewrite  规则  定向路径  重写类型
}

重写类型
last  多次匹配
break 匹配一次
redirect  301  032 重定向
permanent 重定向
server{
	#rewrite /break.html /index.html break
   # rewrite /break /index.html break
   rewrite /permanent.html  /index.html   permanent
}

#### last   
-一般server he if 中 不终止重写后的url 新的URL再走一遍流程 
server{
	location /{
		#rewrite /last  /q.html last;
		rewrite /break  /q.html break;
	#}

	location = /q.html{
		return 400;
	}
}

#####if

if(表达式){
}

location /{
	if($host !=''www.11autos.com"){
		rewrite  ^/(.*)$  https://www.11autos.com/$1 permannet;
	}
	if($reuquest !="GET"){
		return 405;
	}
}

$1 代表正则表达式匹配到的第一个元素



url 重写应用

隐藏后缀

location /{
	rewrite ^/shop/(.*)$   /ecps-protal/shop/$1.jsp break;
	proxy_pass http://tomcat_server1;
}

伪装静态资源

locatin/{
 rewrite ^/shop/list/cat-(.*).html$  /ecps-protal?carId=$1 break;
 proxy_pass http://tomcat_server;
}

nginx expries 缓存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值