Articles of nginx

带参数的NGINX URL重写为无参数的URL

我的服务器上有一个NGINX背景。 我不明白为什么我的规则不起作用。 如何redirect或重写它,以便我可以打开具有相同内容的URL,例如: http://www.example.com/my_dir/value/ 如果我有这个url,例如: http://www.example.com/my_dir/filename.php?parameter=value 我尝试了一些解决scheme,但他们没有工作: Case #1: location /my_dir/ { if ($args ~* "filename.php/?parameter=value1") { rewrite ^ http://www.example.com/my_dir/$arg_param1? last; } } Case #2: rewrite ^/my_dir/(.*)$ /filename.php?parameter=$1 last; Case #3: location /my_dir { try_files $uri $uri/ my_dir/filename.php?$args; } Case #4: location /my_dir/ { rewrite ^/my_dir/filename.php?parameter=(-+([a-zA-Z0-9_-]+))?\$ /filename.php?parameter=$1 last; } 那可能吗? 我必须configuration我的PHP文件才能正常工作吗? 有任何想法吗? 谢谢!

nginx:服务器上的gzip在代理期间丢失

使用nginx作为iis / .NET应用程序服务器之前的反向代理/负载均衡器。 我们的服务器被configuration为gzip响应有效载荷。 工作正常。 当我们把gzip放在前面的时候,反应就不再被压缩了。 问题1:我们需要重新configurationnginx中的gzip吗? 问题2:做两次gzip工作是否合适? nginx将请求传递给Web服务器 web服务器gzip响应 (我认为)nginx解压缩响应,重新gzips响应 这里做什么是正确的? (我觉得gzip应该只发生在一层,尽pipe减less线上的负载是有好处的,甚至在nginx之后)。 这里是我目前的configuration参数为gzip(在http部分,在第一个上游块之前) # ****************************** begin gzip section ******************** # Compression gzip on; # Enable Gzip compressed. # Enable compression both for HTTP/1.0 and HTTP/1.1. gzip_http_version 1.1; # Compression level (1-9). # 5 is a perfect compromise between size and cpu usage, offering about […]

如何重新加载nginxconfiguration只有部分工人?

有什么办法可以防止nginx同时重新加载所有worker的configuration吗? 我已经configuration了一些非常短暂的超时,因此当负载较高时,加倍的工作进程会导致504个错误的增加。 我想通过一个接一个地交换工人(或者三到三个)来防止这种情况发生,但我找不到任何方法来实现这一目标。 编辑: 在configuration期间重新加载nginx使工作进程数量翻倍: 我正在开发的CDN在计算caching键时发出请求。 这些请求真的很短暂(如果我没有记错的话,50ms),所以他们对服务器负载的变化非常敏感。 当configuration重新加载频繁时,这些请求超时。 我认为这是由额外的工作进程引起的,所以我想知道是否有可能在同一时间只对less数工作人员重新加载configuration。 它可以这样工作: 用新的configuration创buildn个工人 停止将旧连接分配给n个工作人员 等到这些老工人优雅地离开 重复这个过程,直到没有更多的工人使用旧的configuration 我没有find任何使这种行为的选项,所以我认为这是不可能的。 但我想确定一下。

Nginx的反向代理与蜻蜓

我们有一个URL www.abc.com,应该指向在wildfly-8.2.0.Final上运行的http:// IP:8080 / app1 / index.html 。 我们有另一个URL www.def.com,我们想要在同一个野蛮装置上指向http:// IP:8080 / app2 / index.html 。 如果我们使用: server { listen IP:80; server_name www.abc.com; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://IP:8080/; } } 这工作,并允许我们反向代理www.abc.com到http:// IP:8080 /这意味着我们得到默认的蜻蜓页面。 这不会帮助我们,因为我们有多个url需要反向代理到不同的野蛮应用程序。 这没有奏效。 server { listen IP:80; server_name www.abc.com; location / […]

NGINX:防止用户在端口上查看网站(example.com:5000)

我已经安装了一个Ubuntu的VPS,这是运行一个Django的应用程序。 我使用waitress作为WSGI服务器,并whitenoise服务静态文件。 另外nginx提供媒体文件夹。 目前的设置在example.com很好,但我想阻止网站显示为example.com:5000因为媒体文件正在这个端口服务。 我用来运行服务器的命令是: web: PYTHONUNBUFFERED=true env/bin/waitress-serve –port=$PORT project.wsgi:application 和nginxconfiguration: upstream app_server { server 127.0.0.1:5000 fail_timeout=0; } server { listen 80 default_server; server_name _; client_max_body_size 4G; keepalive_timeout 10; location /uploads/ { alias /opt/media/; } location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app_server; } } 是否有可能从example.com:5000隐藏网站? PS。 最坏的情况 – 我还可以在5000港口为媒体服务吗?

如何避免与fastcgi_cache的url?

如何避免与fastcgi_cache的url? 不需要caching列表,例如 projectdomain.com/a projectdomain.com/b projectdomain.com/c/d vi /etc/nginx/nginx.conf http { fastcgi_cache_path /var/cache/fastcgi/projectdomain.com levels=1:2 keys_zone=projectdomain.com:10m inactive=5m; add_header X-Fastcgi-Cache $upstream_cache_status; … vi /etc/nginx/conf.d/default.conf map $request_uri $dont_cache_uri { default 0; projectdomain.com/a 1; projectdomain.com/b 1; projectdomain.com/c/d 1; } server { listen 80; server_name projectdomain.com www.projectdomain.com; access_log /var/log/nginx/projectdomain.com.access.log; root /var/www/html/projectdomain.com; index index.php index.html index.htm; try_files $uri $uri/ /index.php?$query_string; client_max_body_size 1G; location […]

/ var / lib / nginx / proxy来自哪里?

我有一个服务器configuration为代理通过设置: proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=backcache:8m max_size=20g inactive=7d; proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args"; 尽pipe如此,当我启动nginx的时候,我最终也得到了/ var / lib / nginx / proxy。 这两个开始填补,最终硬盘驱动器填满。 如果我尝试将我的proxy_cache_path指向/ var / lib / nginx / proxy,则会出现以下错误: nginx: [emerg] the same path name "/var/lib/nginx/proxy" used in /etc/nginx/conf.d/proxy.conf:1 and in /etc/nginx/nginx.conf:62 nginx: configuration file /etc/nginx/nginx.conf test failed nginx.conf的第62行只是http {}部分的结尾,所以我认为这是抱怨我试图重写的“默认”。 我不知道如何禁用这个代理configuration,似乎是重复我设置的显式configuration。 有没有办法来覆盖/删除该默认代理configuration?

在单个docker主机上启动多个Web容器是否合理?

说有一个由docker供电的应用程序。 可能有容器的数据库,Redis等和实际的Web容器(在我的情况下,它是PHP的FPM和Nginx的)。 或者,它可能是一个纯粹的Web节点,只有Web容器运行。 我的问题 – 有一个单一的主机上有一个这样的Web容器(PHP的FMP&Nginx的)有什么好处吗? 会提高性能吗? 它会降低性能吗?

奇怪的Nginx的404

我有一个位置块/ ,通过任何虚拟pathindex.php指示在nginx陷阱页面。 我一直在使用这个设置一段时间,但最近我已经注意到,一些URL -在path段返回404在Nginx中,这意味着他们永远不会到达PHP脚本。 我不知道,如果它相关的-在url或不。 有些路线和它一起工作,有些则不。 作品: /profiles/recently-added 返回404: /explore/puerto-rico /puerto-rico 服务器块: server { listen 80; server_name example.com; root /usr/share/nginx/hosts/www/; location ~ \.(php)$ { # commented out next 3 lines to see if that was the problem, but alas it made no change # try_files $uri = 404; # location ~ \..*/.*\.php$ {return 404;} # […]

设置Amazon弹性Beanstalk可以通过固定的IP地址(而不是CNAME)访问

我想部署我的应用程序到多容器弹性beanstalk能够指向我的Alogging到某些固定的IP连接到它(以某种方式)。 我已经阅读了相关的问题(比如这个),并且明白它可以通过以下方式实现: 解决wwwredirect 没有一个选项,因为我们的生产网站历史上没有www解决,添加redirect将负面影响我们的search引擎优化 将域名转移到Route53,因为它具有别名function 由于法律和业务问题,这不是一个选项。 使用单容器实例 由于自动缩放不是主要function,所以我们为什么要使用每个重新部署将会破坏EIP。 所以我正在考虑其他可能的解决scheme。 我已经能够find一些零碎的细节,可以为用户单独的NAT传出stream量 。 是否有可能使用固定(弹性)IP来设置NAT,以便能够接受传入stream量(包括http + s)并将其redirect到elb? 这应该如何实现的细节(我想某种apache / nginx和proxy_pass请求elasticbeanstalk dns)?