我有一个Debian Jessie机器设置与NGINX和TOMCAT8。 TOMCAT正在运行鳄梨酱。 NGINX设置为在端口443(SSL)上侦听,并在8080上向本地TOMCAT反向代理。一切工作正常。 当我添加ssl_client_certificate指令时,我在浏览器(Safari MacOS和iOS)中获得了一个空白页面。 它适用于Firefox。 尽pipe如此,凭借客户端证书,我仍然可以无缝连接到NGINX的其他位置(例如下面的口径位置)。 TOMCAT开箱即用。 这是我的NGINXconfiguration文件: server { listen 443 ssl; server_name domain.eu; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ssl_certificate /etc/letsencrypt/live/domain.eu/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/domain.eu/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/domain.eu/chain.pem; ssl_client_certificate /etc/nginx/certs/ca.pem; ssl_verify_client on; location /guacamole/ { proxy_pass http://127.0.0.1:8080/guacamole/; proxy_buffering off; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; access_log off; } location […]
我试图使用nginx作为运行Tomcat的内部Web服务器的反向代理,该服务器托pipe着我们的ERP系统的前端。 它已经正常工作了:我可以完美地连接到nginx服务器(这是locking在我们的networking,不同的VLAN,防火墙等等等),然后反向代理到我的ERP服务器。 但是,我想要添加一个额外的保护层,要求用户在他们的计算机上有一个数字证书,以便他们可以访问第一个(nginx)服务器。 后端服务器不使用/不需要证书。 我已经通过这个教程http://nategood.com/client-side-certificate-authentication-in-ngi ,它允许我生成我的自签名证书和其他一切。 当在nginxconfiguration中使用ssl_verify_client可选时,我可以正常连接到我的后端服务器,但是不需要/不需要证书。 当我把它切换到ssl_verify_client时 ,所有的访问都被阻塞了 400 Bad Request No required SSL certificate was sent 无论使用哪种浏览器(Chrome,IE,Edge,Firefox)。 当然,我已经把所有的证书/链条放在我的客户端计算机上,但是在任何浏览器上都没有证书。 我错过了什么? 这里是我的完整的nginxconfiguration: server { listen 443; ssl on; server_name 103vportal; ssl_password_file /etc/nginx/certs/senha.txt; ssl_certificate /etc/nginx/certs/server.crt; ssl_certificate_key /etc/nginx/certs/server.key; ssl_client_certificate /etc/nginx/certs/ca.crt; ssl_verify_client on; location / { proxy_pass http://10.3.0.244:16030; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 300; […]
我有nginx作为一个负载平衡器。 我有3台服务器运行在3台服务器的nginx和redis后面。 它们都在同一个ubuntu实例上的Docker镜像中运行。 这是问题 :我需要logging用户的IP和端口以备将来使用。 但是webSockets和udp都返回: 0.0.0.0:0 这显然不好。 必须有一种方法来转发客户信息。 我猜这是一个头的types和nginx可以利用它? 编辑 – 当前configuration: nginx.conf: worker_processes 7; # server context events { worker_connections 1024; } # Load balance WS traffic across the three servers http { upstream node-app { least_conn; server node1:8080 weight=25 max_fails=3 fail_timeout=30s; server node2:8080 weight=25 max_fails=3 fail_timeout=30s; server node3:8080 weight=25 max_fails=3 fail_timeout=30s; } […]
我们已经遇到了一个问题,当我们的cookie达到一定的规模(超过7K),其中nginx返回400错误的请求与一个空的响应代理到我们的tomcat。 但是,当nginx提供静态内容时不会发生这种情况。 我们已经尝试更新nginxconfiguration来增加缓冲区大小,所以它应该处理最多16k(我们也试图设置它在服务器级别)的单个标头: http { # … client_body_buffer_size 32k; client_header_buffer_size 16k; large_client_header_buffers 4 16k; # … } 我们也把tomcat的max-http-header-size提高到16k。 如果我们将Cookie大小增加到16k以上,我们仍然会收到400个错误的请求,但是响应的“请求标头或Cookie太大”错误消息。 在8k和16k的头部大小之间发生了奇怪的事情,我们无法弄清楚。
我试图限制nginx来避免使用密钥交换的DHalgorithm的密码。 为了强制这个,我把ssl_ciphers设置为一个套件: ssl_ciphers 'AES256-GCM-SHA384'; 重新启动nginx后,我可以从访问日志中看到它仍然select其他的密码(在这种情况下,DHE-RSA-AES128-GCM-SHA256): 10.162.10.235 [02/Feb/2017:15:09:09 +0000] "GET /images/favicon.ico HTTP/1.1" 200 0 "https://example.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" 0.001 – "" "DHE-RSA-AES128-GCM-SHA256" "TLSv1.2" "-" "xxx" "r" – – 我必须误解ssl_ciphers指令是如何工作的。 我也尝试将它设置为'!DH:!ECDH',但是看起来它似乎完全不同意兼容密码。 应该设置什么来强制使用AES256-GMC-SHA384?
我想创build一个dynamic缩略图生成器,并通过nginx传递所有请求,并使用try_filestesting文件存在的文件。 回退应该是一个外部URL,我怎么能做到这一点? server { listen 80; server_name static.stage.domain.example; location / { alias /home/fh/static/$1; try_files $uri $uri/ @bla; } location @bla { proxy_set_header Host http://www.myurl.example?resize=$uri; } } 解决scheme这是我一直在寻找的(工作示例): server { listen 80; server_name static.example.com; location / { root /home/example/static/uploads/thumbnail; try_files $uri @redirect; } location @redirect { expires 30s; return 301 https:/example.com/thumbnail$request_uri; } }
我正面临一个非常奇怪的问题:从几天前,所有与ssh相关的命令都卡在我的linux服务器上,包括scp , git clone , git pull ,例如: ➜ ~ git clone [email protected]:wong2/wx-jssdk-api.git Initialized empty Git repository in /root/wx-jssdk-api/.git/ ssh_exchange_identification: Connection closed by remote host fatal: The remote end hung up unexpectedly 但如果我停止nginx(它运行在同一台服务器上):/ /etc/init.d/nginx stop nginx /etc/init.d/nginx stop ,一切正常。 可能是什么问题呢? 谢谢 更新: 输出scp -v … https://gist.github.com/wong2/07728dc3d5f849129184da5ea34b05dc
我不知道这是否取决于Wordpress,Nginx,还有其他…但我有这个问题: 一个wp站点使用类别名称作为永久链接,如site.com/catname/ 。 那些名字是阿拉伯语。 该url看起来像这样: https://exampe.com/سكس-HD / 可以用两种不同的方式翻译: https://example.com/%d8%b3%d9%83%d8%b3-hd/ https://example.com/%D8%B3%D9%83%D8%B3-hd/ 第一个是小写字母,第二个字母是404字体。这在Google索引中也产生了很多问题。 我怎样才能使2请求指向相同的内容? 这个 $_SERVER['REQUEST_URI'] = strtolower($_SERVER['REQUEST_URI']); 在index.php修复了这个问题,但这是一个糟糕的解决方法
我想避免使用django和nginx不一致的错误页面。 如果一个静态文件没有find默认的nginx错误页面,而不是django的。 我认为这会导致性能不佳,将每个失败的请求redirect到gunicorn服务器,最终导致django错误页面。 我在哪里可以find默认的django错误页面,以及如何让nginx使用它们?
我在Docker中使用NGINX,并使用2节点服务。 负载平衡正在工作。 不知道这是怎么回事,但是我的页面加载到ping1,然后从服务ping2加载CSS文件,然后从ping1加载下一个文件,…我认为这主要是一个完整的页面加载从ping1和从ping2下一个。 哪一个更标准? 这里是docker-compose.yml version: "2" services: ping1: ports: – "80" build: context: ./1 dockerfile: Dockerfile networks: – front-tier ping2: build: context: ./1 dockerfile: Dockerfile networks: – front-tier nginx: build: ./nginx ports: – "80:80" networks: – front-tier networks: front-tier: driver: bridge 至于我的第二个问题,我试图想象如何使用Jenkins来取消ping2,更新它,然后把它提出来,然后对ping1做同样的事情。 现在我只是手动testing,并使用 docker-compose stop ping2 服务停止运行,但是nginx需要一段时间才能实现,并通过ping1进行路由。 我在Chrome上加载80端口,第一个请求是通过ping1的页面加载,第二个是CSS文件,这将是ping2,从ping1加载需要18-90秒之间的任何时间,只是说整个时间“待定” 。 NGINX错误 我如何解决这个问题,在路由到上游之前检查,如果它是“健康的” ,也许通过我手动设置端点? 这里是nginx.conf events […]