Articles of nginx

nginx proxy_pass将两个端口转换为子文件夹

所以我有我的最后一个“反向代理”问题固定关于“映射”一个端口到子文件夹再次感谢这个真棒社区。 我已经能够使用这个解决scheme了一段时间,但现在我面临一个新的问题。 情况是: 有一个网页设置(使用nginx)与此urlhttp://test.domain.com:8042/view.html 。 我需要各种各样的原因,这个端口变成一个子文件夹,并实现它(帮助),并获得http://test.domain.com/view/view.html 。 这个proxy_pass是: location ~/view(.*)$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host:$server_port; proxy_pass http://test.domain.com:8042$1; 这个很棒。 我可以通过http://test.domain.com/view/view.html访问该页面。 这个页面上有几个websocket,其中一个也有8042端口。这个工作正常。 但是,其他websockets有不同的端口,例如8159.我已经添加了一个相应的proxy_pass到nginxconfiguration: location ~/cantrace(.*)$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host:$server_port; proxy_pass http://test.domain.com:8159$1; 从Javascript这个websocket被称为通过 my_websocket = new WebSocket('ws://test.domain.com/cantrace/ws'); 但是这不起作用。 也没有 my_websocket = new WebSocket('ws://test.domain.com/view/cantrace/ws'); 但是,工作是什么? http://test.domain.com:8042/view.html 然后加载view.html上的其他websocket my_websocket […]

nginx auth fail2ban当前连接cloudflare后面

我注意到,fail2bans iptables规则只适用于*新的连接意味着只要有人继续锤击login(基本身份validation或WordPress的等现有的连接继续允许它。 如果我暂停几秒钟,则cloudflare防火墙会阻止访问。 nginxlogging正确的IP,fail2ban报告他正确的ip被禁止,cloudflare也正确地添加了防火墙规则,显示ip地址。 我试过在ip上使用tcpkill,但是什么都不做。 我猜实际的连接是与cloudflare,这使得cloudflare和iptables在连接可以重用的地方是无用的。 build议? 大概一些应用程序层阻塞? nginx基本身份validation不会比较可怕。 因此,所有这一切都会阻止实际用户,而不采取任何措施防止暴力攻击。 希望我错过了一些东西。

我应该在我的Unix套接字上应用什么样的SELinuxtypes?

我有一个/opt/rtd/gunicorn/run.sock套接字文件: /opt/rtd/gunicorn/run.sock 。 我需要nginx能够打开此套接字并写入它。 当我运行sesearch –allow -s httpd_t | grep unix_stream_socket sesearch –allow -s httpd_t | grep unix_stream_socket我注意到httpd_t被允许连接到types为httpd_t的套接字。 但是当我尝试申请时,我得到: # semanage fcontext -a -t httpd_t "/opt/rtd/gunicorn/run.sock" ValueError: Type httpd_t is invalid, must be a file or device type 我尝试过从sesearch中find的其他types,例如httpd_sys_script_t甚至是passenger_t 。 同样的结果。 我应该怎么设置types? 我宁愿不必制定额外的政策,以允许超过必要的。 必须有一种方法允许httpd_t从CentOS 7.2中的现有策略的文件套接字读取,对吧?

nginx 301redirect查询string

我正试图redirect这个丑陋的url, /index.php/component/qs/?com=qs&id=1234 至, /product/?id=1234 所以我想这样做, server { listen 443 ssl http2 default_server; listen 443 [::]:443 ssl http2 default_server; server_name www.example.com; root /home/example/public_html/; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; if($query_string ~ "id=(\d+)") { rewrite ^.*$ /products/?id=$1 permanent; }} location ~ \.php$ { include snippets/fastcgi-php.conf include /etc/nginx/fastcgi_params; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; […]

Nginx的远程访问日志

实际上,我在同一台机器上安装了Nginx和Logstash 。 我想分开他们。 我已经在另一台机器上安装了Logstash 。 如何将accsess_log Nginx文件存储在第二台机器中? 要么 我怎样才能设置一个Logstash远程input文件? 我是否应该使用其他工具(如logatsh-forwarder) ? 最好的问候,Nizar。

networking上的HTTPS / HTTP2速度较慢,但​​本地速度较快

我被要求设置一个更新的优化磁贴服务器,通过HTTPS提供磁贴(当页面不是HTTPS的时候,Google已经禁用了一些地图API),而且使用HTTP2似乎也是正确的做法。 现有的服务器是Apache 2.4.7,运行TileStache(一个Python应用程序)的mod_python来提供tile。 新的服务器是configuration了SSL和HTTP2的Nginx 1.11.3,并使用uwsgi 2.0.12以相同的TileStacheconfiguration运行TileStache。 然而,客户报告说,澳大利亚新服务器的性能比现有服务器慢。 在使用Apache ab在本地testing平铺负载性能时,现有服务器和新服务器都位于美国,并且位于同一基础架构中的单独服务器,现有的Apache服务器通过三个请求平均提供131毫米的单个平铺。 新的Nginx服务器在三个请求上平均提供115毫秒的单个图块。 从连接到澳大利亚高速NBN(国家宽带networking)的14.04 Ubuntu机器以100Mbit / s的速度,对现有服务器的同样ab -n 3请求平均产生867ms 。 但新的服务器平均返回瓷砖1562毫秒 。 客户在澳大利亚的ADSL连接上报告了类似的1-2秒响应,但是来自Chrome开发工具而不是abtesting。 与HTTP相比,什么会导致HTTP2上的HTTPS降级? 更新 我已经configuration了nginx来logging请求协议,并且ab似乎实际上是使用HTTP / 1.0进行请求的。 所以重新考虑使用哪个testing客户端。 我已经设置h2load使用http2执行70个并发请求: h2load -t2 -c 70 -n 70 -i urls 。 在同一基础架构的服务器上,我看到: 最小值最大值平均值sd +/- sd 请求时间:2.62ms 15.40ms 7.11ms 3.12ms 72.86% 连接时间:14.94ms 68.85ms 44.32ms 17.95ms 52.86% 时间到第一个字节:20.90ms 71.60ms 51.43ms 16.79ms 50.00% […]

如果文件存在,Nginx会启用目录列表,如果存在另一个文件,则启用基本身份validation

我正在开发一个站点,用户可以通过FTP上传文件,他们可以在HTTPS链接上看到这些文件。 我希望他们能够 1,通过放置一个简单的“enabledirlisting.txt”文件来启用特定目录中的目录列表 2,将“userpasswordfile.txt”(基本身份validation文件是该文件)启用基本身份validation, 像这样的东西: location $request_filename { if (-f $request_filename/enabledirlisting.txt) { break; } autoindex off; if (-f $request_filename/userpasswordfile.txt) { break; } auth_basic "Password protected directory!"; auth_basic_user_file $request_filename/userpasswordfile.txt; } 不过,我有一些问题; 1,不起作用:P 2,如果第一个条件是错误的,第二个不执行(我不能做多个位置指令) 我相信这是可能的nginxconfiguration。 或者我必须创build一个模块/编辑nginx源代码? 如果是这样的话,我应该从哪里开始呢? 似乎不太难做。 提前致谢

nginx作为反向ssl代理(Apache + Varnish)跳过自己的configuration

我有一个新的Ubuntu 14.04安装与采取以下步骤: Apache2 2.4.7 MariaDB上一个稳定的版本 PHP 7.0.9(和几个模块) Apacheconfiguration为使用PHP7-FPM * 使用Apache2的mod_rpaf ** PHPMyAdmin 4.6.3与PHP7.0.9正常工作。 WordPress 4.6 *** 清漆4.0 Nginx 1.10.1在/etc/nginx/ssl中带有ssl证书 和** – >问题发生在这些configuration之前和之后*** – > wp-config.php有强制ssllogin和ssl admin的代码。 两个工作都很好,只有Apache / Varnish。 为Apache创build了一个SSL证书,如果Apache设置为侦听端口443,则一切正常。 这是我的/etc/apache2/ports.conf: #NameVirtualHost 192.168.1.86 ServerName 192.168.1.86 Listen 8080 #<IfModule ssl_module> # Listen 443 #</IfModule> #<IfModule mod_gnutls.c> # Listen 443 #</IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 […]

为什么舰队服务不运行,但docker指挥呢?

我正在尝试在nginx.service上启动一个文件nginx.service中的服务: [Unit] Description=nginx [Service] User=core TimeoutStartSec=0 EnvironmentFile=/etc/environment ExecStartPre=-/usr/bin/docker stop nginx ExecStartPre=-/usr/bin/docker rm nginx ExecStart=/usr/bin/docker run –rm –name nginx -v /home/core/nginx/conf:/etc/nginx/conf:ro -p 80:80 nginx:latest # ExecStop=-/usr/bin/docker stop nginx ExecStopPost=-/usr/bin/docker rm nginx Restart=always RestartSec=10s [X-Fleet] 当我使用fleetctl start nginx.service ,它显示没有错误,但是当我尝试访问该站点时, Aug 24 15:00:09 core-01 docker[2839]: 172.17.8.1 – – [24/Aug/2016:15:00:09 +0000] "GET / HTTP/1.1" 403 571 "-" "Mozilla/5.0 (Windows […]

经过一段时间的正确工作PHP不能执行任何系统命令

我正在设置一个新的Web服务器。 我在ubuntu 16.04上用php-fpm有NGINX。 除了一件事以外,一切都很好:经过2-3天的正确工作PHP不能运行任何外部系统命令。 当我说“系统命令”时,我的意思是什么? 例如,当我运行函数shell_exec参数'whoami' echo shell_exec('whoami'); 我得到以下 警告:shell_exec():无法执行'whoami' 而PHP脚本试图执行的每个Linux命令都会发生这种情况 当我试图使用邮件()函数发送邮件时,我收到类似的错误 警告:邮件():无法执行邮件传送程序'/ usr / sbin / sendmail -t -i' 只有当我从浏览器运行PHP脚本时才会发生。 如果我尝试从terminal运行它像这样 sudo -u www-data php /path/to/my/script.php 那么一切正常。 再次说明:只有经过一段时间的正确工作,问题才会出现,并在VDS重新启动后消失(一段时间)。 只有当我从浏览器运行脚本,这意味着它由NGINX服务。 请帮我find解决我的问题。 PS日志:Php错误日志 [27-Aug-2016 04:19:37 Europe/Moscow] PHP Fatal error: Uncaught Error: Call to a member function is_logged() on null in /home/serv/www/templates/page_parts/header_tpl.php:6 Stack trace: #0 /home/serv/www/templates/index_tpl.php(9): require() […]