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;
}