我有一个像下面的location块 location ^api/([^/]+)(/.+)$ { set $my_host $1; set $my_path $2; proxy_pass http://$myhost$my_path$is_args$args; } 对于大多数正常情况下,如/api/foo/bar?1234 。 但是,当我介绍特殊的URL编码值,南下。 当URI是/api/foo/bar[%7B%7D] , $my_path被解码,并作为/foo/bar[{}]传递给$my_host 。 这不是一个有效的url。 我试图通过使用条件来匹配$request_uri和$uri来解决NGINX的限制,但是结果要么是双重编码的,要么是未编码的。 location ~* ^api/([^/]+)(/.+)$ { set $my_host $1; if ( $request_uri ~* ^api/([^/]+)(/.+)$ ) { set $my_path $2; } proxy_pass http://$myhost$my_path$is_args$args; } 在上面的例子中, $my_path是/foo/bar[%257B%257D] 。 我也尝试使用第二个正则expression式的set misc模块中的set_unescape_uri 。 我怎样才能让NGINX以与客户端提供的格式相同的格式删除path组件?
我有一个configuration文件,并有一个网站启动并运行。 但是,如果我们转到非SSL页面,那么它也会redirect到https。 我在Magento中有一个站点,它的基本URL为http://www.cabletiesupply.com/ ,基础安全URL为https://www.cabletiesupply.com/ 。 现在我没有强迫pipe理员使用SSL,但也使用https://不应该这样。 它应该正常工作为http://。 这不是。 在magentoconfiguration中没有问题。 我已经创build了一个Nginx的configurationhttps://gist.github.com/bhargavmehta/4280a5a77b48236da82db2ee52fdc7d2 我在configuration中犯了一个错误。 任何人都可以引导我呢? 谢谢
下面的图片是在puu.sh( http://puu.sh/k0Hki.jpg )上托pipe的,显然它在url中加载了一个带有.jpg扩展名的swf。 以下是chrome / firefox显示的源代码(使用开发人员工具时) Firefox开发者工具模式 我们怎么能复制它在不同的服务器上(最好nginx)
我有一个由nginx服务的Rails应用程序。 我用这个conf在所有路由上启用了ssl: server { listen [::]:80; listen 80; server_name domain.com; access_log /var/log/nginx/domain-access.log; error_log /var/log/nginx/domain-error.log; return 301 https://$host:443$request_uri; } server { listen [::]:443 ssl spdy; listen 443 ssl spdy; server_name domain.com; access_log /var/log/nginx/domain-access.log; error_log /var/log/nginx/domain-error.log; ssl_certificate /home/dokku/domain/tls/server.crt; ssl_certificate_key /home/dokku/domain/tls/server.key; keepalive_timeout 70; add_header Alternate-Protocol 443:npn-spdy/2; location / { gzip on; gzip_min_length 1100; gzip_buffers 4 32k; gzip_types text/css […]
前言:尝试安装JXCore的Plesk的节点扩展,我不能得到它的工作。 给我一些错误,他们的支持不回答电子邮件…… [IP地址] =真实IP,example.com =真实域 无论如何,我有我的nodejs应用程序启动并运行一个SSL证书。 如果我去https://example.com:3000 ,这是我用于节点的端口工作正常。 SSL证书加载所有绿色,一切都很好。 我正在使用Plesk 12.5,并且已经安装了Nginx。 .conf文件位于/var/www/vhosts/[domain]/conf/nginx.conf。 在顶部它说: #DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY, #SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED. 他们不是在开玩笑。 对这个文件做任何改变几乎立即被覆盖。 这里是整个文件内容: server { listen [IP ADDRESS]:443 ssl; server_name example.com; server_name www.example.com; server_name ipv4.example.com; ssl_certificate /usr/local/psa/var/certificates/cert-HREdQ9; ssl_certificate_key […]
我的服务器CPU百分之百,并且在一两天之后使用PUMA和Nginx没有响应。 我使用4名工人。 到目前为止,我已经看到strace的问题,导致下面的输出 futex(0x20f0f64, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x20f0f60, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 futex(0x20f0f30, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x20f0f98, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x20f0f9c, FUTEX_WAIT_PRIVATE, 2376235, NULL) = -1 EAGAIN (Resource temporarily unavailable) 看看FD显示,资源她是“puma.sock”有没有人有一个想法如何接近这个问题?
我有nginx作为reverse_proxy服务器在多个应用程序服务器上运行的多个应用程序。 我想诱导特定的HTML /脚本到响应内容设置预先注册的url。 这些URL可能属于nginx后面的任何应用程序。 为此,我使用所有的url的sub_filter,它工作正常。 但是,当我试图把“sub_filter”在“如果”块现在允许。 我需要像下面的东西。 resolver 8.8.8.8; proxy_pass http://www.example.com; proxy_set_header Accept-Encoding *; gunzip on; if ( $induceScript = 1) { sub_filter "</body>" "<div class='induced' <font color=red size=8>Induced Text </font></div></body>"; sub_filter_types *; sub_filter_once off; } 当我尝试重新启动nginx时显示以下错误消息。 nginx: [emerg] "sub_filter" directive is not allowed here in /etc/openresty/openresty.conf 从这个如果我正确理解“IF”指令不允许“sub_fiter”里面。 有什么具体的原因呢? 还提供正确的方法/替代方法来解决这个问题。
我坚持一个nginx规则: 我必须在我们的监控服务器上使用Nginx,它使用Zabbix。 我成功地为zabbixconfiguration了nginx,这样我就可以访问monit.domain.com并将它发送给zabbix )。 但是我不能设置monit.domain.com/dashboard,所以它显示/ usr / share / dashboard / pages的内容 ,也就是php(当然,只有index.php很重要,你猜对了,这是我的仪表板)。 以下是仪表板特定的nginx conf:在/etc/nginx/sites-enabled/monitoring.conf中: server { ######## server stuff with /location and ssl certs location /dashboard { alias /usr/share/dashboard/pages/index.php; } } 使用root不适合遵循nginx最佳实践(并且不起作用,无论如何我都试过)。 编辑:这里是我在Nginx的日志中得到的错误: [error] 8247#0: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: XXX.XXX.XXX.XXX, server: monit.domain.com, request: […]
我目前有一个Elastic Beanstalk实例在没有负载平衡的情况下运行,将来我会使用Elastic Load Balancer。 我的EB实例坐在一个nginx代理的后面,我知道要解决这个问题,我可以禁用nginx代理,但是这会影响我,因为我在未来扩展应用程序。 我在网上阅读一篇文章说,如果我在我的应用程序中添加一个.ebextensions文件夹,我将能够添加一个文件,以使networking套接字通过代理响应,但我没有运气。 当我检查我的EB日志时,我可以看到入站套接字请求已收到,但没有任何信息被发送回连接的客户端。 我有一个01_files.config文件在我的.ebextensions文件夹(驻留在我的应用程序的根目录。 其内容是: files: "/etc/nginx/conf.d/websocketupgrade.conf" : mode: "000755" owner: root group: root content: | proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 我如何能够通过我的EB实例工作而不禁用nginx代理?
我有一个错误的插件,最终生成/ mobile的URL。 我正在修复这个插件,但同时我想写一个Nginx的重写规则来redirect,如下所示: http://www.domain.com/article-slug/mobile 至 http://www.domain.com/article-slug/ 有人可以帮我想出重写规则吗? 我研究过,但找不到对我有用的东西。 谢谢你的时间。