Articles of nginx

使用IP地址在Nginx的server_name我Django

我正在使用django,uwsgi和nginx。 我已经尝试nginx和django文件来提供静态文件。 我的conf文件是: http { upstream django { server 127.0.0.1:8000; } server { listen 80; server_name 192.xx.xx.x; root /path/to/project/; location /static/ { alias /path/to/static/; } location / { include /etc/nginx/uwsgi_params; uwsgi_pass django; uwsgi_param Host $host; uwsgi_param X-Real-IP $remote_addr; uwsgi_param X-Forwarded-For $proxy_add_x_forwarded_for; uwsgi_param X-Forwarded-Proto $http_x_forwarded_proto; } } } 我的configuration文件是真的吗? 我可以在server_name部分使用IP地址吗? (IP地址是我的机器IP)

nginxconfiguration多个主机

我正在使用nginx来pipe理不同域上的多个站点。 我刚刚更新了这一切,以确保所有到mainsite.com的stream量都被redirect到https(明显有一个针对mainsite.com的工作证书),但是目前其他网站都使用http。 然而,如果有人访问https://othersite.com ,他们被路由到https://mainsite.com ,不匹配的证书给他们一个警告,如果他们select继续前进,他们被发送到django服务器在mainsite.com上。 然后,因为othersite.com不是该网站上的允许主机,则会失败。 我想我需要的是一些捕获所有的HTTPSstream量,这是不会 mainsite.com重新路由到http,但我已经读过,这是不可能的。 有任何想法吗? 编辑:这是我目前的configuration粗略副本: – default.conf server { listen 80 default_server; return 444; location / { root /usr/share/nginx/html; index index.html index.htm; } } mainsite.conf server { listen 80; server_name www.mainsite.com mainsite.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name www.mainsite.com mainsite.com; ssl_certificate /etc/letsencrypt/live/mainsite.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mainsite.com/privkey.pem; include /etc/nginx/sites-available/ssl.inc; […]

Nginx删除redirect请求

我有redirect规则: location /aanbod.html?limit=all {return 301 https://www.site.nl/compleet/ ;} 这个规则redirect,但是留下限制=所有请求 如何删除它并得到没有请求的新url? Thaks!

从nginx的根URL访问子目录的文件

为了保持我的目录的组织,同时保留干净的URL,我想这样做是为了使我的/ src /目录中的文件可以从我的网站的根URL中查看。 我已经尝试了各种解决scheme来实现这一点,无济于事,例如: location / { rewrite ^(.*)$ src/$1; } 请给我正确的方向吗?

postgresql无法分配请求的地址

我有一个网站与Nginx的,PHP的FMP,Postgresql和PGBouncer,它已经工作了一年多了。 昨天服务器进入不响应,重新启动后,它工作5或10分钟,之后没有响应和相同的错误信息: 2017/04/04 15:32:37 [error] 2532#0:* 31341 FastCGI在stderr中发送:“PHP消息:PHP警告:pg_connect():无法连接到PostgreSQL服务器:无法连接到服务器:无法分配请求的地址服务器是否在第21行的/usr/share/nginx/html/lib/postgresql.class.php中的主机“127.0.0.1”上运行,并接受端口6432上的TCP / IP连接? 我甚至恢复到上次工作configuration,它仍然是相同的(当我开始nginx,它的工作一两分钟,然后上面的错误)。 我检查了php-fpm日志,我遇到以下情况: [04-Apr-2017 14:48:50]警告:[池www]似乎很忙(你可能需要增加pm.start_servers或pm.min / max_spare_servers),产卵8个孩子,有0个空闲,共24个孩子 和 [04-Apr-2017 14:48:59]警告:[池www]服务器达到pm.max_children设置(50),考虑提高它 在postgresql日志中,我发现这个: 提示:考虑增加configuration参数“max_wal_size”。 到目前为止我已经改变了以下参数 在php-fpm中: pm.max_childeren from 50 to 100 pm.start_servers from 5 to 10 pm-min_spare_servers from 5 to 10 pm-max_spare_servers from 35 to 100 在Postgresql中: mac_wal_size from 1GB to 2GB 仍然没有运气! 我该怎么办?

Nginx反向代理SSL通信

比方说,我有一个反向代理服务器A和一个云服务器B (它们在同一个networking中)。 服务器B只能通过内部networking访问。 服务器A可以通过互联网I访问。 服务器A使用Let's Encryptencryption。 I <-HTTPS->( A <-HTTP→ B ) 虽然B只能通过内部networking访问,但内部networking中的任何人都可以拦截A和B之间的stream量并读取它,因为stream量是未encryption的。 确保A和B之间的stream量的最佳方式是什么? 我可以使用自签名证书吗? 我该如何configurationn上的A服务器?

内部IP地址显示在我的网站日志中

我logging所有访问我的网站,如date,请求的url和IP地址。 我今天从“10.xxx”格式的“内部”IP中获得了一些条目。无论这是谁,访问了我网站上的几个链接,我无法确切知道这个“连接”在做什么。 我真的想问,他们是如何欺骗他们的知识产权的,“这个连接”的意图可能是“什么”,如果他们使用的是内部知识产权,他们如何从我的网站收到任何数据? 我希望这些问题不要太模糊。 谢谢

Nginx上千个连接

我有一个服务器与一个nginx服务器(1.10.2),因为我们迁移了几十个网站,它不断“崩溃”。 它仍然存在,但它只是不回答任何请求或logging任何东西,直到重新加载或重新启动完成。 重新加载后查看状态页面: Active connections: 9432 server accepts handled requests 550310 550310 657656 Reading: 0 Writing: 3280 Waiting: 6150 这看起来很荒谬,而查看访问日志没有足够的查询来certificate这一点。 想知道是否可能像slowris攻击,我试图降低client_body_timeout和client_header_timeout到5秒,它看起来像现在爬得慢,但谁知道。 任何想法,我可以做些什么来防止这个nginx每隔几个小时死亡? 我已经禁用keepalive,以防万一,没有改变的事情。 编辑:nginx.conf: pid /var/run/nginx.pid; user www-data; worker_processes 12; worker_rlimit_nofile 300000; error_log /var/log/nginx/error.log; events { multi_accept on; use epoll; worker_connections 2048; } http { index index.html index.htm index.php; server_tokens off; include /etc/nginx/mime.types; include /etc/nginx/conf.d/*.conf; […]

重写目标主机IP在URI中传递的代理

我需要在NGINX中创build一个代理重写,其中重写URL由请求的URI中包含的数据组成。 例如: 鉴于url: http:// proxyhost:5555 / go / 222.222.222.222 / action / etc 重写应该是: http:// 222.222.222.222:6666 / action / etc 这在NGIX中可能吗? 我可以在Apache的httpd上做到这一点,但到目前为止我还没有想出如何在nginx上做到这一点 (特定于Apache的例子): RewriteEngine On RewriteBase "/" RewriteRule "^go/(.*)/action/(.*)$" "http://$1:6666/action/$2" [P]

代理在尝试将数据上行发送到部分closures的连接(重置数据包)后生成的HTTP 502响应

我正在通过代理服务器返回零星的502s。 当检查数据包stream时,我看到nginx发送POST请求到源服务器已经发送[FIN,ACK]的套接字。 我想了解这是如何可能和任何潜在的解决scheme。 原始问题(发送响应后5秒发送FIN还是ACK)还是代理服务器? 下面是PCAP的屏幕截图,说明问题: 我的理解: 来自原点的响应是[PSH,ACK]; 代理发送一个与[P]一起收到的数据的[ACK](wireshark确认下一个[ACK]用于之前收到的[PSH-ACK])。 7秒过去了(注意时间戳btw / [FIN,ACK]和我们的POST([PSH,ACK])); 原点发送[FIN,ACK]。 当第一个[FIN,ACK]发送时,原始TCP状态机应处于FIN_WAIT_1状态。 然后我们发送另一个POST,导致[RST]作为回报,因为起源不期待[PSH,ACK]。 题: 这种情况可能的解释是什么? 为什么代理(nginx)发送另一个请求,如果它已经收到一个FIN并且实际上是承认它! (POST [PSH,ACK]数据包中的确认号实际上是[FIN,ACK]的SEQ_NUMBER + 1),所以它确认幻像位FIN。 5秒后,原点返回[FIN,ACK]而不是直接返回的可能原因是什么? 读取超时/空闲超时? 我没有自己的起源 – 所以不能在那里捕捉。 额外细节: 代理(nginx错误日志)上的错误日志: 2017/04/17 06:51:07 [error] 123091#0: *225010841 upstream prematurely closed connection while reading response header from upstream, client: X.90.10, server: www.example.com, request: "POST /web/?a=b HTTP/1.1", upstream: "http://X.32.238:80/web/?a=b", host: "www.example.com" […]