这是我使用rest框架的django应用程序的部署:
/ImageEncryption/
我的服务:
#Deployment
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
service: my-api-service e
name: my-api-deployment
spec:
replicas: 1
template:
metadata:
labels:
name: my-api-selector
spec:
containers:
-
name: nginx
image: nginx
command: [nginx, -g,'daemon off;']
imagePullPolicy: IfNotPresent
volumeMounts:
-
name: shared-disk
mountPath: /static
readOnly: true
-
name: nginx-config
mountPath: /etc/nginx/nginx.conf
subPath: nginx.conf
ports:
-
name: nginx
containerPort: 80
-
env:
-
name: STATIC_ROOT
value: /src/static/
-
name: MEDIA_ROOT
value: /src/media/
-
name: CLIENT_ORIGIN
value: https://marketforce.platinumcredit.co.ke
-
name: DJANGO_SETTINGS_MODULE
value: config.production
-
name: DEBUG
value: "true"
image: localhost:5000/workforce-api:0.2.0
command: [ "./entrypoint.sh" ]
name: my-api-container
imagePullPolicy: IfNotPresent
ports:
-
name: my-api-port
containerPort: 9000
protocol: TCP
volumeMounts:
-
name: shared-disk
mountPath: /src/static
initContainers:
-
name: assets
image: localhost:5000/workforce-api:0.2.0
command: [bash, -c]
args: ["python manage.py collectstatic --noinput"]
command: [bash, -c]
args: ["sleep 10"]
command: [bash, -c]
args: ["cp -r static/* /data"]
imagePullPolicy: IfNotPresent
volumeMounts:
-
mountPath: /data
name: shared-disk
volumes:
-
name: shared-disk
emptyDir: {}
-
name: nginx-config
configMap:
name: nginx-config
这是我的nginx配置:
# Service
apiVersion: v1
kind: Service
metadata:
name: my-api-service
labels:
label: my-api-service
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
selector:
name: my-api-selector
正如您在我的部署文件中所看到的,我在同一个pod中运行nginx和我的应用程序。一切都在minikube上运行良好,除了它没有被应用的样式。在浏览器中查看apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
data:
nginx.conf: |
events {
worker_connections 1024;
}
http {
upstream api {
server 127.0.0.1:9000 fail_timeout=0;
}
server {
access_log /var/log/nginx/api.my.log;
error_log /var/log/nginx/api.my.mesozi.com-http-error.log;
listen 80;
server_name localhost;
location /static/ {
autoindex on;
alias /static/;
}
location /media/ {
alias /src/media/;
}
location = /favicon.ico {
access_log off;
log_not_found off;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:9000/;
}
}
}
,所有静态文件请求都可以network
。我错过了什么?
我想为我的API显示样式并没有任何用处,但我只是想把它拖到工作原因。
答案 0 :(得分:1)
查看静态文件部分:
location /static/ {
autoindex on;
alias /static/;
}
/static/
是静态Web文件的绝对路径吗?如果没有,请使用别名的完整路径,因为之前尚未定义root。
为什么你为这种文件打开了autoindex标志,它应该设置为off:
autoindex off;
或者,您可以尝试使用静态文件的根定义:
location /static/ {
root /var/;
autoindex off;
}
然后在/var
下有一个静态文件夹/var/static
。位置部分将附加到根目录中指定的路径。
答案 1 :(得分:0)
只需在您的nginx.conf上添加以下代码
...
http {
include /etc/nginx/mime.types;
...
}
...