Articles of nginx

Nginx的URL重写停止通过位置代码

我正在尝试在Nginx上configuration我的Phalcon(php框架)项目。 不幸的是,我无法完成重写工作。 为了更好地理解我的问题,请查看configuration文件: server { listen 80; ## listen for ipv4; this line is default and implied listen [::]:80 default_server ipv6only=on; ## listen for ipv6 index index.html index.htm index.php; server_name 149.21.165.142; root '/usr/share/nginx/www'; #custom settings for phalcon project: location ^~ /phalcon{ alias '/usr/share/nginx/phalcon/public'; # if file exists return it right away if (-f $request_filename) { […]

Nginx htpasswd成功login后获得403

我想用密码访问Web服务器根目录( /var/www/dl.somewebsite.com/files/ )中的文件夹/folder/subfolder/ ,其余部分应公开访问。 使用下面的脚本,当使用正确的证书时,我得到一个403 Forbidden错误。 我在这里错过了什么? server { listen 80; server_name dl.somewebsite.com; access_log /var/www/nginx-logs/dl.somewebsite.com combined; root /var/www/dl.somewebsite.com/files/; location / { autoindex on; } location ^~ /folder/subfolder/ { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/somefolder/dl.somewebsite.com/.htpasswd; } }

如何将其从nginx转换为haproxy

我怎样才能从nginx写这个代理pass示例: 代码一: location /appDir/ { proxy_pass https://Name/appDir/; } haproxy? 另外:下面是来自haproxy网站。 代码二: # ProxyPass /mirror/foo/ http://bk.dom.com/bar http-request set-header Host bk.dom.com reqirep ^([^ :]*)\ /mirror/foo/(.*) \1\ /\2 但是从注释部分开始吧?

通过ssh隧道和nginx代理访问服务器

我是nginx的新手。 我已经用nginxinheritance了一个function齐全的configuration好的Ubuntu服务器,并且希望另外调整它来支持下面描述的有点奇怪的configuration。 基本信息。 我的Ubuntu服务器(我们将其命名为server.corp.com)运行在内部公司networking中。 它拥有Gerrit和Jenkins,每个都有www接口,在自己的端口(8081和8082)上侦听,nginx代理请求到相应的locations 。 例如http://server.corp.com/gerrit的请求被代理到http://server.corp.com:8081不幸的是,我现在无法显示nginxconfiguration,因为我正在家里写这个问题。 我记得它包含了带有proxy_pass子句的行。 现在,这是奇怪的configuration。 server.corp.com, ports 80, 22 and 29418 <–> other Linux <–> Windows Other Linux和Windows PC也属于公司networking(很大)。 Other Linux可以通过端口80,22和29418连接到我的服务器。其他端口被防火墙阻止,我不会受到影响。 Windows PC可以使用SSH连接到Other Linux ,并且可能还有其他端口和协议。 我在Other Linux上既没有login也没有超级用户权限。 我的同事WindowsPC用户已经成功地在端口29418上使用Putty和SSH隧道连接到我们的Gerrit(它也监听端口29418)。 相应的隧道是localhost:29418 -> server.corp.com:29418 。 我的目标是让我的同事在server.corp.com访问Gerrit和Jenkins的www接口。 我可以指示他build立一个或多个SSH隧道到我的服务器。 不过,我想,这也需要一些调整nginx,因为简单的SSH隧道localhost:80 -> server:80不起作用。 Chrome在尝试连接到本地主机时抱怨SSL连接超时:80。 更新2:我试图在我的电脑上build立这个设置(Windows也是如此),并使用Gi​​t发行版中的wget。 我还创build了一个实验的位置。 这里是nginxconfiguration的相关部分(我希望) # file nginx.conf include /etc/nginx/conf.d/*.conf; # … # file conf.d/tunnel.conf […]

Gitlab 8.0.3与Apache2 / Nginx

背景 Ubuntu 15.10 Apache / 2.4.10(Ubuntu) 模块相关性全部启用: mod_rewrite的 mod_proxy的 mod_proxy_http GitLab社区版8.0.3 GitLab docroot:/ opt / gitlab / embedded / service / gitlab-rails / public 我以这种方式安装GitLab: https ://about.gitlab.com/downloads/#ubuntu1404 问题 在我的服务器上,我有一个运行Apache2(exemple-site.com)的网站。 我有GitLab与捆绑的nginx(exemple-gitlab.com) 我有1个服务器,1个IP和多个FQDN。 像这样,我所有的域名都指向GitLab。 所以exemple-gitlab.com指向GitLab,但exemple-site.com也指向GitLab,也指向其他所有FQDN。 解决方法 我想我必须(而且我试过): 禁用捆绑的nginx并configurationapache2的gitlab(很难做到这一点) 将绑定的nginxconfiguration为apache2的反向代理(很难做到) MAJ:事实上问题是Apache和捆绑的nginx运行在同一个IP上,并且有相同的端口(80)。 而且我不想在81端口上运行一个网站,只有80端口。 我更喜欢为我的所有PHP网站使用apache2,我不介意gitlab是否使用apache2或捆绑的nginx,我只需要使用我的每个网站的所有FQDN,而不是所有的FQDN redirectinf到gitlab。 理解 我不明白如何omnibus或铁路或反向代理工作。 我试过在/etc/gitlab/gitlab.rb禁用捆绑的nginx nginx['enable'] = false # For GitLab CI, use the following: ci_nginx['enable'] […]

configurationnginx自动启动ffmpeg

我希望ffmpeg在启动时自动从nginx启动,并为访问我的web服务器的用户提供一个转换的破折号stream。 现在我可以去: HTTP://本地主机:18080 /仪表/ twitch.mpd 但为此我必须跑步 ffmpeg -re -i rtmp://remotestream.com/twitch -vcodec libx264 -vprofile baseline -strict -2 -acodec aac -ar 44100 -ac 2 -f flv rtmp:// localhost:1935 / dash / twitch 手动。

清漆 – 在负载平衡器(HAProxy / nginx)之前或之后,

我打算在负载平衡器(HAProxy或nginx本身)后面运行一些微型的ARM“物理云”服务器,但是我不能决定把Varnish放在什么地方。 我可以在每个实例上都有,在本地做这个工作,但是看到内容是一样的,看起来很浪费。 我也可以在与负载均衡器相同的实例上拥有它 – 但是这会在前面或后面创build问题? 对我来说,从逻辑上讲,它应该在前面 – 如果它可以从caching中获取页面,则不需要打扰请求的负载平衡器。 而且,我甚至可以删除负载平衡器,并使用Varnish在后端实例之间循环。 但是,我在网上发现了许多不同的解决scheme,没有任何(最近的)基准testing或者任何变种的优点/缺点,所以我不能决定我的“理想”场景是否存在任何问题(作为负载均衡器和caching引擎的Varnish) 。 那么 – 使用Varnish作为负载平衡器是否可行? 如果不是,我应该把它放在负载平衡器本身的前面还是后面?

在nginx上允许不安全的连接

我有一个网站在nginx上运行,并启用了HTTPS。 对于任何http请求,我将用户redirect到https。 问题是,我们的一些客户端由于防火墙阻止页面而无法从他们的工作计算机访问网站。 也就是说,Google Chrome显示ERR_CONNECTION_CLOSED 。 有没有办法可以redirect到HTTPS(默认情况下以HTTPS打开),同时还允许HTTP访问。 当然,我可以禁用redirect到HTTPS,但是默认情况下,所有页面都将以HTTP方式打开。 以下是我的服务器块 server { listen 80; server_name www.abcd.com; return 301 https://www.abcd.com$request_uri; # Want to open https page when possible } server{ listen 443 ssl; server_name www.abcd.com; ssl_certificate /home/xyz.crt; ssl_certificate_key /home/xyz.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "Something Something"; location / { … } }

nginxredirect,部分工作

我正在configuration一个在apache下工作的WordPress的网站,我已经转到了nginx。 该网站是公司活动的独立部分,即“交易为”。 母公司是KJT Investments Ltd,交易人是KJT Aviation。 该网站是KJT航空公司和母公司的DNS点在服务器的IP地址服务kjtaviation.com。 这两个站点都从同一个服务器和IP地址提供服务。 在Apache下,redirect在.htaccess中 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress 我为kjtaviation.com创build了如下的服务器文件 server { listen 95.154.237.186:80; root /var/www/kjtaviation; index index.php ; # Make site accessible from http://kjtaviation.com/ server_name www.kjtaviation.com kjtaviation.com; […]

nginx强制http头覆盖

我们在我们的网站上放置了一些错误的http标题,这些标题在我们的一些子域名上创build了一些问题。 解决这个错误是非常困难的,因为我们发送的头文件长时间有效(182,5天(!)),所以我们不能要求每个用户重置整个浏览器caching。 是否有可能设置nginx虚拟主机强制覆盖每个旧的HTTP头? 所以如果用户再次访问主站点,他会得到新的正确的标题? 我们发送的标题: add_header Strict-Transport-Security "max-age=15768000; preload;"; add_header X-Content-Type-Options nosniff; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none;