Articles of nginx

Nginx允许特定文件夹中的跨源请求

如何在Nginx中的特定文件夹或文件夹中允许跨源请求? 在Apache中,我有一个.htaccess文件与以下内容的文件夹中: <FilesMatch "\.(json)$"> <IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule> </FilesMatch>

nginx SSL_do_handshake()失败

这是我第一次在我的开发机器上configurationSSL证书(我不是系统pipe理员 – 我需要SSL来与Facebook一起工作)。 我决定与ngingx代理一个rubysinatra应用程序,没有什么幻想。 这是我尝试连接到我的HTTP服务器时得到的错误。 AFAIK nginx是这里的罪魁祸首: 2015/11/26 15:42:03 [info] 42872#0: *3 SSL_do_handshake() failed (SSL: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca:SSL alert number 48) while SSL handshaking, client: 31.13.113.70, server: 0.0.0.0:4567 这就是我所做的: 从RapidSSL下载了cert(a .key,.crt和.csr) 从RapidSSL下载可信任的证书( https://knowledge.rapidssl.com/library/VERISIGN/ALL_OTHER/RapidSSL%20Intermediate/RapidSSL_CA_bundle.pem )并保存在/ etc / ssl / cert / 安装在本地nginx并configuration如下: upstream server { server 0.0.0.0:8080; } server { listen 4567 default_server ssl; […]

让Nginx重写后端响应

我有一些在其他服务器上运行的服务,它们在没有SSL的http:// someLocalIp:80上提供了一个web应用程序。 我想在SSL中包装这个,并在https:// nginxServer-globalIp / deliver / 我能够看到像这样的后端服务,但这显然会中断所有链接和引用,因为现在“/ deliver /”必须是前缀。 我不明白如何去使用重写,因为重写似乎(对我)主要是用来改变请求,而不是从后端回复。 这是可能吗? 🙂 当前configuration: server { listen 443; ssl on; ssl_certificate /etc/ssl/some.crt; ssl_certificate_key /etc/some.key; location /deliver { proxy_pass http://someLocalIp; } } 我已经尝试在proxy_pass的末尾添加/(尽可能多的答案build议),但是这会创build一个空白的响应,就好像后端服务没有向nginx发送任何东西。 另外,改变后端以匹配“/ deliver”前缀并不像听起来那么容易,所以我希望没有这样做就可以做到这一点。

Nginxcaching交替其中两个请求可以同时填充大型caching文件?

我正在使用Nginx作为大型文件的caching逆向代理。 原始服务器不必输出比必要的带宽更重要的是对我来说。 所以如果文件的下载开始有两个连接,我不想让nginx下载整个文件两次。 所以我启用了proxy_cache_lock 。 但是第二个请求必须等到第一个请求完成才能下载文件。 这可能需要很长时间,我希望第二个请求立即开始下载。 所以我需要的是一个系统,其中两个请求(这将是HTTP范围请求)可以填充同一个caching文件,并且每个请求只从源服务器下载它的范围。 这只对大文件有意义,这就是大多数系统(varnish,nginx)似乎打算使用的。 一般来说,Nginx可以很好地处理大文件,但是在这种情况下并不适用。 有一个caching系统可以满足我的需求,还是我必须写我自己的? 我认为一些CDN可能有类似的要求。

当我使用代理服务器时,我的网站上收到“ERR_EMPTY_RESPONSE”

我有一个专用的服务器: Ubuntu 14.04.3 BIND 9.9.5-3ubuntu0.5-Ubuntu(扩展支持版本) Nginx版本1.9.6在端口81 使用Zend OPcache v7.0.6-dev的PHP 5.5.30(cli) MySQL 5.5.45 UFW启用 我的网站:Drupal 7 一切正常。 但每次我连接到psiphon3代理(防filter),我在Chrome浏览器上得到“ERR_EMPTY_RESPONSE”: No data received ERR_EMPTY_RESPONSE Unable to load the webpage because the server sent no data. 注意:其他网站,如drupal.org回应。 我检查了系统日志,Nginx和绑定日志,但没有任何帮助。 也许这是因为DNSconfiguration(绑定)或Nginx的,我不知道我的服务器configuration是什么问题。 如果需要更多的服务configuration细节,我可以提供。 当人们使用代理时,我需要网站做出回应。

Nginx反向代理服务错误的主机

我的Nginx反向代理做的很奇怪。 一个域特别是不能正确parsing,而是显示一个完全不同的主机的网站。 只有wiki.example.net是错误的,它会redirect到www.client.co.uk 。 其他一切都很好。 在/ etc / nginx / sites-available中的3个单独的文件中 默认 server { listen 80 default_server; server_name _; root /var/www/example/; index index.html index.php; include /etc/nginx/include/php; } wiki.example.net upstream examplewiki { server 10.2.7.18:80; } server { listen 80; server_name wiki.example.net; location / { proxy_pass http://examplewiki/; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_redirect off; […]

Nginx + Tomcat proxyName更多的代理

我想为nginx代理的两个域(jira.firstdomain.com,jira.seconddomain.com)configurationtomcat的proxyName。 所以对于第一个域我在nginx中有这个configuration upstream jira { server 127.0.0.1:8080; } proxy_cache_path /var/run/nginx-cache levels=1:2 keys_zone=nginx-cache:50m max_size=50m inactive=1440m; proxy_temp_path /var/run/nginx-cache/tmp; server { server_name jira.firstdomain.com; listen 80; access_log /var/log/nginx/jira.log combined; location / { proxy_set_header Host $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8080; proxy_set_header Authorization ""; set $do_not_cache 0; if ($request_uri ~* ^(/secure/admin|/plugins|/secure/project)) […]

用于Web服务器的SSLconfiguration与关于禁用CBC和TLSv1.0的PCI-DSS要求兼容

我正在寻找支持当前(2015年11月)关于SSL的PCI-DSS要求的Web服务器(nginx)configuration: 没有TLSv1.0(将来只有TLSv1.1和TLSv1.2和TLSv1.3)。 没有微弱的密码,这意味着没有CBC(密码块链接),没有DES,IDEA密码套件,没有RC4等。 使用Nexpose进行多次扫描后,我创build了Nginxconfiguration,最终满足了这个非常严格的要求。 我目前的testingconfiguration如下所示: server { #(..) ssl_certificate asdf.crt; ssl_certificate_key sadf.key; ssl_protocols TLSv1.1 TLSv1.2; #see about TLSv1.1 below ssl_ecdh_curve secp521r1; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; ssl_dhparam asdf-dh2048.pem; #sorry, no support for Java 6u45 ssl_ciphers #ssh_ciphers of course should be in one line ECDHE-ECDSA-AES256-GCM-SHA384: ECDHE-ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES256-GCM-SHA384: ECDHE-RSA-AES128-GCM-SHA256: DHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES128-GCM-SHA256: AESGCM: !aNULL:!eNULL:!EXPORT:!RC4:!MD5:!PSK; } 不幸: 只有7个ssl_ciphers,通常使用的只有前6个。 […]

我们如何configurationnginx来防止代理滥用?

我们如何configurationnginx来防止代理滥用? (注意,我把nginx设置为一个洋葱服务器,这就是在日志中存在回环IP的原因)我发现一些GET请求的内容,我不主持也没有任何关系,返回200状态。 有问题的GET请求,从日志如下,没有一个URL是我的: 127.0.0.1 – – [03 / Dec / 2015:02:19:41 -0600]“GET / HTTP / 1.1”200> 1159“ http://j4ko5c2kacr3pu6x.onion/ ”“Mozilla / 5.0(Windows NT 6.1; WOW64 )> AppleWebKit / 537.36(KHTML,像Gecko)Chrome / 47.0.2526.73 Safari / 537.36“ 127.0.0.1 – – [03 / Dec / 2015:02:32:28 -0600]“GET / HTTP / 1.1”200> 1159“ – ”“S crapy / 1.0.3(+ http://scrapy.org ) “ […]

从apache切换到nginx – mod_rewrite的问题

我只是将我的服务器从apache2切换到nginx,现在我的.htaccess重写有一些问题。 <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On # Redirect Trailing Slashes… RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller… RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] 我已经收集到,为了使这个工作在Nginx上,我将需要编辑Nginx服务器块。 任何人都可以告诉我如何? 非常感谢你提前。