k8s使用nginx相关操作

1 篇文章 0 订阅

nginx location语法

基本语法:location [=||*|^~] /uri/ { … }

=:严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。
~:为区分大小写匹配(可用正则表达式)
!~:为区分大小写不匹配
~*:为不区分大小写匹配(可用正则表达式)
!~*:为不区分大小写不匹配
^~:如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式。

示例

location = / {
 # 只匹配 / 查询。
}
location / {
 # 匹配任何查询,因为所有请求都以 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配。
}
location ^~ /images/ {
 # 匹配任何以 /images/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试。
}
location ~*.(gif|jpg|jpeg)$ {
 # 匹配任何以 gif、jpg 或 jpeg 结尾的请求。
}
location ~*.(gif|jpg|swf)$ {
  valid_referers none blocked start.igrow.cn sta.igrow.cn;
  if ($invalid_referer) {
    #防盗链
    rewrite ^/ http://$host/logo.png;
  }
}

一. 有资源的静态页面

1.1 制作docker镜像

在这里插入图片描述

1.1.1 index.html
<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>全系屋</title>
  <style type="text/css">
	*{padding:0;margin:0;font-family:microsoft yahei;font-size:14px;}
	</style>
 </head>
 <body>
 <img src="images/index.jpg" style="width:100%;border:0;" />
 <!-- <div style="background:url(images/banner.jpg) center top no-repeat;height:3643px;"> -->
 </body>
</html>

body里面是一张图片,地址是images/index.jpg

1.1.2 创建nginx配置文件default.conf

第一种:实用型

server {
    listen 80;
    server_name localhost;
    
    location ^~ /images{
        root /home/;  #图片路径,正常的路径是 /home/file/images,但是这里面可以配置 /home/,/home/file/,/home/file/images/三个,前面两个会自动正则匹配,后面那个是真是路径,就不正则匹配了。
    }
    
    location / {
        root /home/file;
        index index.html;
        }
}

说明:

  • location ^~ /images:这里面的图片地址如果地址不完全(实际地址为/home/file/images,可以设置为/home/),会自动正则匹配

第二种:简单易懂

server {
    listen       80;
    server_name  localhost;
    location / {
        root /home/file/;  #执行HTML和image的父级路径
        index index.html;
    }	
}

说明:
/home/file/:是根目录,把所有的静态资源文件放这里就行

1.1.3 创建Dockerfile文件
FROM registry.cn-shanghai.aliyuncs.com/wanfei/nginx:1.18.0
RUN rm -rf /etc/nginx/conf.d/default.conf && \
mkdir -p /home/file/
ADD default.conf /etc/nginx/conf.d/
ADD quanxiwu /home/file/
EXPOSE 80

说明:

  • RUN rm -rf /etc/nginx/conf.d/default.conf && mkdir -p /home/file/:删除nginx的默认配置文件default.conf,创建目录/home/file/用于存放静态资源文件
  • ADD default.conf /etc/nginx/conf.d/:将自己修改的nginx配置替换默认配置
  • ADD quanxiwu /home/file/:将quanxiwu文件夹里面的html文件和images文件夹复制到/home/file/下面,不包含quanxiwu
1.1.4 buildpush镜像到阿里云

启动Docker Toolbox
在这里插入图片描述
在此界面鼠标右键Git Bash Here

16872@DESKTOP-TEOEPLI MINGW64 /d/test
$ ls
default.conf  Dockerfile  quanxiwu/

16872@DESKTOP-TEOEPLI MINGW64 /d/test
$ docker login -u=1687252050@qq.com -p www19930327 registry.cn-shanghai.aliyuncs.com

16872@DESKTOP-TEOEPLI MINGW64 /d/test
$ docker build -t registry.cn-shanghai.aliyuncs.com/wanfei/quanxiwu:v1 .

16872@DESKTOP-TEOEPLI MINGW64 /d/test
$ docker push registry.cn-shanghai.aliyuncs.com/wanfei/quanxiwu:v1

1.2 编写资源文件 quanxiwu-nginx.yaml

[root@master k8s-yaml]# cat quanxiwu-nginx.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: quanxiwu-nginx
spec:
  template:
    metadata:
      labels:
        app: quanxiwu-nginx
    spec:
      containers:
      - name: quanxiwu-nginx
        image: registry.cn-shanghai.aliyuncs.com/wanfei/quanxiwu:v1
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: quanxiwu-nginx
  labels:
    app: quanxiwu-nginx
spec:
  ports:
  - port: 80
    protocol: TCP
    name: http
  selector:
    app: quanxiwu-nginx
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: quanxiwu-nginx
  annotations:
    kubernetes.io/ingress.class: "nginx"
    kubernetes.io/tls-acme: "true"
spec:
  tls:
  - hosts:
    - quanxiwu.wanfei.wang
    secretName: quanxiwu-tls
  rules:
  - host: quanxiwu.wanfei.wang
    http:
      paths:
      - path: '/'
        backend:
          serviceName: quanxiwu-nginx
          servicePort: 80

运行

[root@master k8s-yaml]# kubectl apply -f quanxiwu-nginx.yaml

1.3 测试

请求 https://quanxiwu.wanfei.wang

在这里插入图片描述

二. ingress-nginx配置路径转发

参考

现在是请求 https://quanxiwu.wanfei.wang访问,如果想在后面加/s1才能访问

修改Ingress

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: quanxiwu-nginx
  annotations:
    kubernetes.io/ingress.class: "nginx"
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
  - hosts:
    - quanxiwu.wanfei.wang
    secretName: quanxiwu-tls
  rules:
  - host: quanxiwu.wanfei.wang
    http:
      paths:
      - path: '/s1'
        backend:
          serviceName: quanxiwu-nginx
          servicePort: 80

nginx.ingress.kubernetes.io/rewrite-target: /:必须要加这个,否则失败

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值