Articles of nginx

stream浪的开发环境转发请求到分期和过滤和用本地版本replace某些文件

我想创build一个Vagrant开发环境,一个开发者可以访问dev.example.com ,stream浪的机器会向dev.example.com发出同样的请求,除了过滤掉一些文件,比如app.js和main.css并为当地的FS提供服务。 有太多的api依赖于地区的顺利发展。 这个有可能? 任何提示或build议也将有所帮助

简单的Nginx 302redirect不起作用

我试图得到一个简单的redirect在我的nginx服务器上工作。 我收到302响应代码,但Location标题未设置。 我错过了什么? 我最小的情况(与一个硬编码的图像): location /redirectme { return 302 https://www.google.com/logos/doodles/2016/childrens-day-2016-brazil-5739205150900224-hp2x.jpg; } 我的实际使用案例(将用户redirect到传递给url查询参数的url ): location /redirectme { return 302 $arg_url } 我尝试的另一个configuration(手动设置位置标题): location /redirectme { add_header Location $arg_url; return 302; } 这些都没有实际的redirect客户端到新的URL(只返回302)。 我的networking应用程序的其余部分很好,只是不是这个redirect片。 如果它有所作为,我正在一个ssl server {…}块内工作。 有任何想法吗? 谢谢! —–更新—— 这是整个server块… server { listen 443; server_name myserver.com; access_log /path-to/myserver.com-ssl.access.log; ssl on; ssl_certificate /path-to/myserver.com.crt; ssl_certificate_key /path-to/myserver.com.key; ssl_client_certificate /path-to/clientkey.pem; […]

CloudFlare SSLredirect循环

我们在一台服务器上安装了常规网站( http://example.com )和networking邮件( https://example.com/mail 。 为了保护免受DDoS攻击,我们使用CloudFlare免费版本。 所以问题是:当closuresCF时,一切正常 – 可以访问网站和networking邮件。 但是当打开CF保护 – 网站是可以的,但是networking邮件说SSL中的“太多redirect”。 试图设置如上所述 – 没有任何变化。 似乎在CF规则redirect规则中的一些错误configuration,或者ngnix – 无法理解。 但是哪里? /etc/nginx/sites-enabled/example.com (网站): server { listen 80; server_name example.com; server_name_in_redirect off; root /var/www/example.com; index index.php index.html index.htm default.html default.htm; location / { try_files $uri $uri/ /index.php?$args;. } location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ { return 403; error_page 403 /403_error.html; } […]

使用Nginx作为使用Apache重写URL的PHP​​站点的反向代理

我正在尝试使用Nginx作为运行PHP站点的Apache的caching反向代理。 这是一种工作,但试图重写Apache设置的URL时,问题来了,它不工作,因为我希望。 这是设置。 我有一个基于Joomla的PHP网站在Apache上运行,端口8080(http)和44343(https) – 这工作正常,这里没有问题。 我已经删除了Joomla .htaccess文件,因为我认为Nginx会重写index.php本身,并照顾caching必要的PHP文件。 Joomla重写URL如下example.com/page1 => example.com/index.php/page1 我有Nginx监听端口80,443。下面是网站configuration server { listen 80; listen [::]:80; server_name www.example.com return 301 https://$server_name$request_uri; } server { client_max_body_size 100M; autoindex off; listen 443 ssl; listen [::]:443 ssl; server_name www.example.com; server_name_in_redirect off; ssl_certificate /example.com/ssl.crt; ssl_certificate_key /example.com/ssl.key; root /var/www/site; index index.php index.html index.htm default.html default.htm; location / { […]

在微小的请求减lessgunicorn CPU使用率

我正在用Python编写一个事件聚集服务器,使用Nginx + Gunicorn。 系统在1 cpu / 2核心盒(AWS c4.large)上的CPU最大值之前可以扩展到大约300 rps。 增加一个枪炮工或者使用小工,只能在利润率上(约10%)。 响应在1-2ms范围内(事件正被写入磁盘)。 从我的分析看来,gunicorn似乎花费了所有的时间和精力读取socket(在select()调用中是sync.py)。 与此同时,Nginx占据了CPU本身的2-3%左右。 使用UNIX套接字不会更改networking套接字上的性能configuration文件。 由于这些事件非常小(大约200字节),看起来它需要花费过多的努力才能将请求从套接字中取出。 我希望能够批量这些请求有效载荷之前,他们到达gunicorn,但我不知道如何做到这一点。 有什么办法可以减lessgunicorn正在采取的努力/ CPU的数量,并提高每箱的吞吐量?

Nginx中的worker_aio_requests指令是什么?

假设我使用的是像Ubuntu 14.04这样的现代Linux发行版,并假设我正在使用epoll()系统调用,那么worker_aio_requests是做什么的? 文档说: 如果使用epio连接处理方法使用aio,则此指令将为单个辅助进程设置未完成的asynchronousI / O操作的最大数目。 当我第一次读到的时候,我想这意味着对于一个给定的工作进程,当一个连接到达时,在连接的生命周期中,它检查是否读或写就绪,如果没有,则将其放入事件队列中。 工作进程继续接受连接。 当一个特定连接准备好读取或写入时,内核通知系统调用,工作人员处理数据。 所以这个指令将引用在事件队列中允许的I / O操作的次数。 但我不认为这是这样做的,因为我认为这就是事件模块的worker_connections指令。 所以我很困惑什么worker_aio_requests和worker_connections呢?

nginx + php 7 + filter_input +宅基地

我需要validation的URL,然后下一个代码是完美的使用PHP和Apache: $url = filter_input(INPUT_GET, 'url', FILTER_SANITIZE_URL) 例如:通过这个URL:plantilla_mvc.net//////controlador/metodo/////argumentos 它正在转变:/ controlador / metodo / argumentos( 没有////// ) 但与Nginx它不工作 。 然后我试了一下: $ url = filter_input(INPUT_SERVER,'REQUEST_URI',FILTER_SANITIZE_URL); 但filter_input 不适用于INPUT_SERVER 我怎么解决这个问题?? 谢谢你的帮助

客户端SSL证书在Nginx中validation错误

我们有一个根CA(ADCS),我们用它来签署一个客户端证书,我们用它在Nginx中进行客户端证书validation。 这是相关的Nginxconfiguration文件: ssl_client_certificate /etc/nginx/ca.crt; ssl_verify_client optional; ssl_crl /etc/nginx/latest.pem; ssl_verify_depth 1; ca.crt是ROOT CA证书,latest.pem是CRL。 然而,无论何时我尝试使用任何证书(Working和Revoked),都会导致Nginx中的400 Bad Request。 错误: – 客户端SSL证书validation错误:(3:无法获得证书CRL)读取客户端请求标头 信息: – 类似的configuration似乎在Apache中完美的工作,但是对于NGINX,它总是会导致错误。 我试图将ssl_verify_depth更改为1和2,但它导致相同的错误。

如何简化Nginx的映射正则expression式的规则?

我不知道这个问题是否被允许。 如果没有,原谅我:) 无论如何,我有一个nginxredirect的映射规则 /hotel/xyz/abc /hotel/xyz/abc-nana; /hotel/xyz/abc/ /hotel/xyz/abc-nana; ~^/hotel/xyz/abc\?(.*) /hotel/xyz/abc-nana?$1; 我的问题是,他们可以合并成一个规则? 我不太了解正则expression式

Nginx重写下载php文件而不是执行

我想重写一些与Nginx的链接,但PHP文件下载而不是执行,如果我在浏览器中运行PHP文件正在工作,所以没有fastcgi的问题。 我已经在这里查了其他类似的问题,但没有任何帮助。 我的nginx.conf文件 …. location / { location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ { expires max; } location ~ [^/]\.php(/|$) { fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9002; fastcgi_index index.php; include /etc/nginx/fastcgi_params; } } location ~* "/\.(htaccess|htpasswd)$" { deny all; return 404; } location /contact { rewrite ^/contact/?$ /contact.php last; } 我需要重写contact.php /联系,但不工作。 我也试过: location /contact { rewrite ^/contact?$ /contact.php […]