#nginx #kubernetes #nginx-ingress
#nginx #kubernetes #nginx-ingress
Вопрос:
У меня есть nginx.conf со следующей конфигурацией.
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 65;
proxy_send_timeout 65;
proxy_read_timeout 300;
proxy_buffers 4 256k;
proxy_buffer_size 128k;
proxy_busy_buffers_size 256k;
large_client_header_buffers 8 64k;
client_header_buffer_size 64k;
client_max_body_size 1024m;
server {
listen 443 ssl;
server_name server1.com;
ssl_certificate /etc/nginx/ssl/server1.com.crt;
ssl_certificate_key /etc/nginx/ssl/server1.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
proxy_ssl_session_reuse on;
proxy_ssl_protocols TLSv1.2;
rewrite_log on;
proxy_cache_bypass $http_cache_control;
proxy_ignore_headers "Set-Cookie";
add_header X-Proxy-Cache $upstream_cache_status;
location / {
location = /robots.txt {
add_header Content-Type text/plain;
return 200 "User-agent: *nDisallow: /n";
}
location ~ ^/(files/app) {
proxy_pass http://server1.com:31111;
}
proxy_pass https://server2.com;
}
}
Я хотел бы перенести свою конфигурацию nginx в kubernetes ingress-nginx ingress.yml. Есть ли способ реализовать эту конфигурацию, используя входные ресурсы kubernetes?
Это мой ingress.yml, который, конечно, не работает и попадает в URL https://server1.com/files/app переходит в несколько перенаправлений и в итоге выдает 502 плохих шлюза.
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
meta.helm.sh/release-name: my-service
meta.helm.sh/release-namespace: default
generation: 1
labels:
app.kubernetes.io/managed-by: Helm
name: my-service
namespace: default
selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/my-service
spec:
rules:
- host: server1.com
http:
paths:
- backend:
serviceName: my-service
servicePort: 31111
path: /files/app
pathType: ImplementationSpecific
Комментарии:
1. Какую версию Kubernetes вы использовали и как вы настроили кластер? Вы использовали установку «голого металла» или какого-либо облачного провайдера?
2. @kkopczak Это K8s 1.21 и на cloudprovider. Также обратите внимание, что все остальные правила входа работают нормально, кроме этого. Я подозреваю, что это что-то связанное с обратным прокси или SSL-сертификатом … но я не знаю, как преобразовать этот файл nginx.conf в ingress.yml для Kubernetes.
3. Извините за поздний ответ. Что произойдет, если вы измените порт с
listen 443 ssl;
наlisten 31111 ssl;
в nginx.conf?
Ответ №1:
Решением было удаление записей из httpd.conf. мой сервис напрямую обходил запрос, но я также предоставил эти записи в httpd conf, из-за чего он выполнял внутренний цикл. Что касается правила входа. Вышеуказанная конфигурация работала нормально после того, как я удалил связанные правила из httpd.conf.