我试过连续几天来配置上Openshift运行nginx的容器中,到现在为止,并没有得到它的工作。运行Nginx的作为Openshift非root用户和侦听端口80
我读过有关使用非root用户对secuity原因。然而,无论是根还是非root用户,openshift不允许我在端口80
2017/06/22 21:18:57 [emerg] 1#1: bind() to 0.0.0.0:80 failed (13: Permission denied)
nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)
创建容器中的绑定在我的本地机器,我可以成功绑定到容器更高的端口(8081为例如),然后在主机中创建一个访问映射(docker run --rm -d -p 9000:8081 mynginx
)。通过这种方式,我可以成功地访问主机地址localhost:9000
上的网站,但我没有意识到我可以在openshit上实现类似的功能。
我希望我可以部署我的图像与非root用户和nginx监听较高的端口(8081),在同一时间openshift转发所有传入服务器的端口80流量到端口8081的容器(nginx )。我目前的设置如下:
Dockerfile:
FROM nginx:alpine
COPY nginx.conf /etc/nginx/nginx.conf
COPY dist /usr/share/nginx/html
RUN chmod -R 777 /var/log/nginx /var/cache/nginx /var/run \
&& chgrp -R 0 /etc/nginx \
&& chmod -R g+rwX /etc/nginx \
&& rm /etc/nginx/conf.d/default.conf
EXPOSE 8081
和我的nginx.conf文件:
worker_processes 4;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events { worker_connections 1024; }
http {
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 30m;
#See http://blog.argteam.com/coding/hardening-node-js-for-production-part-2-using-nginx-to-avoid-node-js-load
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=one:8m max_size=3000m inactive=600m;
proxy_temp_path /var/tmp;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
gzip_comp_level 6;
gzip_vary on;
gzip_min_length 1000;
gzip_proxied any;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_buffers 16 8k;
server {
listen 8081;
server_name localhost;
location/{
root /usr/share/nginx/html;
index index.html;
expires -1;
add_header Pragma "no-cache";
add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
try_files $uri$args $uri$args/ $uri $uri/ /index.html =404;
}
}
}
观测数据:部署在管道过程中自动发生。我正在使用来自gitlab的custom docker image,负责部署到openshift。此自定义图像使用openshift origin CLI来处理部署。
Stack Overflow是用于编程和发展问题的站点。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://stackoverflow.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[Unix&Linux堆栈交换](http://unix.stackexchange.com/)会是一个更好的地方。 – jww
另请参见[允许非根过程绑定到端口80和443?(https://superuser.com/q/710253/173513)上超级用户。 – jww
nginx错误消息不适合nginx配置文件。 shell'nginx -V'中'oc debug dc/your-dc'的输出是什么 – Aleksandar