Articles of nginx

如何限制整个虚拟主机的最大networking速度?

背景 我有一个Apache(与NginX反向代理)作为Web服务器。 我有一个论坛和图像主机服务运行。 但是如您所知,图像主机服务会导致很多networking带宽(Mbps)。 我想通过限制图像主机服务的虚拟主机的最大stream量来为我的论坛保留一些带宽。 我做了什么: 阿帕奇 我已经安装了mod_bw模块,以限制最大带宽。 它似乎工作得很好,因为它减慢了页面加载速度。 但这还不够。 我还需要限制下载速度,现在图像将全速下载。 所以这一个不工作(或部分工作),但我会保持在httpd.conf 。 Nginx的 内置模块limit_rate正在下载图像。 所以看起来如果将两个模块组合起来,映像主机服务可以在受限制的环境下运行。 但等一下…当我一次下载多个图像时,所有图像将以相同的有限速度下载。 例如我设置为50KB / s,如果我下载一个图像,最高速度是50KB / s。 然后下载另一个镜像文件,最后一个镜像文件下载速度为50KB / s,总共为100KB / s。 这不是我所需要的。 我真正需要的是: 无论同时有多less用户同时浏览图像主机网页,只能共享50KB / s的总带宽。 (只是一个例子,我会增加这个) 因为我有Apache和NginX,所以我不在乎把多个模块结合起来来帮助我实现目标。 请帮我解决问题,非常感谢!

使用nginx的OCSP无法获得颁发者证书

我在使用GlobalSign颁发的证书在nginx / 1.6.2上设置OCSP时遇到了麻烦。 我读了许多相关的post,但没有find我find的解决scheme。 当我连接到服务器时,OCSP不起作用 > openssl s_client -connect cawi.kondeor.at:443 -tls1 -tlsextdebug -status […] . OCSP response: no response sent depth=2 C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CA verify return:1 depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign Domain Validation CA – SHA256 […]

Nginx混合名称和基于IP的主机

我想在独立的IP地址(由于SNI)托pipe我的网站。 我使用AWS EC2上托pipe的nginx docker镜像。 当我把它设置为: server { listen <MY_IP>:80; server_name <MY_HOST>.com; return 301 https://google.com; } 即使域DNS A条目设置为<MY_IP> ,也不会解决此问题。 它始终解决我的默认设置,其他IP地址托pipe: server { listen 80 default_server; server_name _; … } 是否有可能混合IP和基于名称的主机? 有没有可能以某种方式debuggingnginx解决什么,为什么?

nginx反向代理没有基地url

我有一个应用程序,我不能configuration一个基地址。 假设它的url是192.168.1.100:8011 我想configurationnginx,这样我就可以进入一个像192.168.1.100/myapp myapp这样的url,并转到另一个应用程序。 我用来做的configuration只有当我有一个基地的url。 例如,如果我在192.168.1.100:8011/myapp上有一个应用程序,而我想使用nginx来使用192.168.1.100/myapp ,那么我没有任何问题,但是我不能这样做。 那可能吗 ?

为什么nginx比apache的反向代理慢

到处都是我读的,nginx比apache快得多,特别是作为反向代理。 对我来说,它完全相反,我不能确定为什么。 我做错了吗? 对于一个简单的请求,用apache我得到了一个45毫秒的时间与Nginx的80毫秒 。 几乎是时间的两倍。 检查浏览器和“ab -n1000 -c5 https://myddomain.de ” Apache 2.4.10 Nginx 1.9.10 相关的Apacheconfiguration部分: <VirtualHost *:443> ServerName mydomain.de SSLProxyEngine On SSLProxyVerify none SSLProxyCheckPeerCN off SSLProxyCheckPeerName off ProxyPass / https://myipaddress:8443/prod/public/ ProxyPassReverse / https://myipaddress:8443/prod/public/ SSLEngine on SSLCertificateFile /blablcert.pem SSLCertificateKeyFile /blablaprivkey.pem </VirtualHost> Nginxconfiguration: server { # SSL configuration # listen 443 ssl http2; listen [::]:443 ssl […]

为什么nginx需要重启?

Ubuntu 16.04在启动时启动nginx。 它被configuration为在本地主机上代理多个开发网站。 当nginx第一次启动时,这些站点没有运行。 如果我启动网站并浏览到https://dev.mysite.com (在etc / hosts中configuration),浏览器会说连接被拒绝。 然后我重新启动nginx并连接。 为什么第一次拒绝? ☀ ps aux | grep nginx root 1805 0.0 0.0 129336 2348 ? Ss Sep22 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; … other processes ☔ sudo /usr/sbin/nginx -T nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test […]

configurationiptables来保护运行Docker容器的服务器

我尝试使用Docker运行2个容器(问题不是特定于他们): MySQL(官方容器) Redmine(官方集装箱) 每个容器都有一个转发的端口: MySQL: 127.0.0.1:3000 -> 3000/tcp Redmine: 127.0.0.1:3306 -> 3306/tcp 正如你所看到的,目标是让他们只能在主机内访问。 一个Nginx服务器(不是通过Docker安装的)侦听端口80,并将任何请求redirect到Redmine容器端口(使用代理function: proxy_pass等)。 所有这一切完美的作品,当我去服务器IP,我可以访问Redmine。 但是,我想要使用iptables添加一些安全性。 所以,目标是: 全部默认删除(这一点是确定的) 允许Docker只在本地主机中生成业务 允许容器访问互联网(下载依赖关系,更新…) 允许访问SSH和Nginx(也可以) 首先,我尝试添加–iptables=false选项来停止–iptables=false搞乱我的iptables。 重启后,我认为,用干净的iptables(所有的政治默认设置为ACCEPT ,所以没有任何事情完成),一切都会工作。 但事实并非如此,我得到了来自Nginx的"502 Bad Gateway"响应。 我不明白为什么不添加额外的规则,如果Docker无法工作(如果全部是开放的,它应该工作…不是?)。 我试图阅读有关Docker中高级networking的文档,我也尝试了多个教程,但是我找不到阻塞Docker的东西: https://fralef.me/docker-and-iptables.html https://docs.docker.com/v1.8/articles/networking/ 我不是一个Linux / Docker / SysAdmin专家,所以也许,对于你们中的一些人来说,这是显而易见的(至less我希望!)。 不要犹豫,如果需要更多的细节问。 预先感谢您的回答。

当使用HTTP / 2时,Nginx不能显示许多静态图像

我的一个WordPress站点有很多静态图片(每页至less有20个),启用HTTP / 2后,下面的图片开始显示为断开(如同死链接的图片一样)。 error.log文件中没有显示任何错误,但Chrome 53在控制台中这样说: Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR 我试图与client_max_body_size混乱,但那是没有运气。 编辑:这是我的nginx.conf: load_module /usr/local/libexec/nginx/ngx_mail_module.so; load_module /usr/local/libexec/nginx/ngx_stream_module.so; user www; worker_processes 4; error_log /var/log/nginx/error.log info; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; client_body_buffer_size 10K; client_header_buffer_size 1k; client_max_body_size 0; large_client_header_buffers 2 1k; client_body_timeout 12; send_timeout 10; #keepalive_timeout 0; keepalive_timeout 65; gzip off; […]

NGINXdynamic代理通过parsing器

尝试使用nginx在Kubernetes中设置api网关。 我试图按照指定服务和版本的path跟单个子域模式。 api.domain.com/service/v0/api/resource/10 -> http://servicev0/api/resource/10 现在忽略版本… 这确实解决了。 location ~/(?<service>(\w+))/(?<version>(v[0-9]+(\.[0-9]+)*)) { resolver 169.254.169.250; proxy_pass http://theservice; } 使用api.domain / theservice / v0 / location ~/(?<service>(\w+))/(?<version>(v[0-9]+(\.[0-9]+)*)) { resolver 169.254.169.250; proxy_pass http://$service; } location ~/(?<service>(\w+))/(?<version>(v[0-9]+(\.[0-9]+)*)) { resolver 169.254.169.250; proxy_pass http://$service; } 错误 *1 theservice could not be resolved (110: Operation timed out), 还需要重写请求来删除$ service和$ version。

错误200#0:* 79在读取来自上游的响应标题时,在stderr中发送了FastCGI:“主脚本未知”

我想在我的MAC上configuration新的nginx,但我总是得到[error] 200#0: *79 FastCGI sent in stderr: "Primary script unknown" ..我不知道什么我做configuration错误。 这是我的nginx.conf文件: #user RobDee; worker_processes auto; #error_log logs/error.log; #error_log logs/error.log info; pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format #main '$remote_addr – $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log; error_log logs/error.log; sendfile […]