k8s使用nginx相关操作
文章目录nginx location语法一. 有资源的静态页面1.1 制作docker镜像1.1.1 index.html1.1.2 创建`nginx`配置文件`default.conf`1.1.3 创建`Dockerfile`文件1.1.4 `build`和`push`镜像到阿里云1.2 编写资源文件 quanxiwu-nginx.yaml1.3 测试二. `ingress-nginx`配置路径
·
文章目录
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 build
和push
镜像到阿里云
启动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://blog.51cto.com/14154700/2452707
- https://blog.csdn.net/nickDaDa/article/details/103347829?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
现在是请求 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: /
:必须要加这个,否则失败
更多推荐
已为社区贡献9条内容
所有评论(0)