我花了很多小时,看似简单的configuration,但我不知道正确的configuration:( 我有2个不同的应用程序,我必须服务2个不同的url。 这个应用程序下的所有东西都需要抓住所有的index.php。 示例:(公用URL =>服务path(应用程序)) https://example.com/ => /var/public/index.php https://example.com/xy => /var/public/index.php https://example.com/xy/zw => /var/public/index.php 但! https://example.com/api/v2 => /api/public/index.php https://example.com/api/v2/xy => /api/public/index.php https://example.com/api/v2/xy/test => /api/public/index.php 我也有Apache的反向代理configuration:(仅用于重写/ API / V2到/ api /公共,所以只有nginx / api /公共URI显示 – 反向代理需要,我只有1个公共IP,但许多网站) <VirtualHost *:443> ServerName xxx.com <Proxy *> Order deny,allow Allow from all </Proxy> SSLEngine On SSLCertificateFile /etc/apache2/cert/xxx.com.pem SSLCertificateKeyFile /etc/apache2/cert/xxx.com.key SSLCertificateChainFile /etc/apache2/cert/yyyy.pem […]
我正在使用nginx secure_link来防止video从热链接。 如果主服务器密钥匹配远程服务器密钥。 video将能够访问/观看。 否则,如果用户访问链接直接没有MD5链接video返回403。 。 。 md5键匹配主键和远程键。 而服务器的时间是一样的。 。 。 主服务器(Apache)像这样生成链接。 http://remote_example.com/videos/myvideo.mp4?st=E_Jb6MScgyMqjUo3eNQGkA&e=1485757614 。 。 远程服务器nginxconfiguration。 “mypassword”与主服务器设置相同。 使用VestaCP面板的远程服务器。 location ^~ /videos/ { alias /home/admin/web/example.com/public_html/videos; secure_link $arg_st,$arg_e; secure_link_md5 mypassword$uri$arg_e; if ($secure_link = "") { return 403; # invalid hash or direct link } if ($secure_link = "0") { return 410; # link expired } mp4; gzip […]
我有一个开发版本的Django网站,域名为“mysite.com”,我曾经通过URL“ http://web01.mysite.com ”访问我的网站。 我刚刚安装了通配符数字证书,现在我无法访问该网站。 如果我使用“ https://web01.mysite.com ”或“ http://web01.mysite.com ”,我会得到一个快速的“ERR_CONNECTION_REFUSED”消息。 我已经阅读了Nginx的SSL文档,在Nginx上设置了许多关于SSL的博客文章,并且研究了这个错误,但我无法弄清楚什么是错的。 我的服务器是Debian 8.7。 我正在运行Nginx 1.6.2,“–with-http_ssl_module”是configuration参数之一。 我也使用默认的nginx.conf文件。 nginx进程在默认帐户“www-data”下运行。 我的证书和私钥文件位于以下目录中: drwr-xr-x root root /srv/ssl/mysite.com/ 这里是我的捆绑证书和私钥文件驻留在上述目录中: -r–r—– root www-data ssl-bundle.crt -r–r—– root www-data mysite.com.key 当我configuration通配符证书时,我指定“* .mysite.com”作为通用名称。 这是我的/etc/nginx/sites-enabled/mysite.conf文件: server_tokens off; upstream gunicorn { server 127.0.0.1:8000 fail_timeout=0; } server { #listen 80; listen 443 ssl; server_name web01.mysite.com; ssl_certificate /srv/ssl/mysite.com/ssl-bundle.crt; ssl_certificate_key /srv/ssl/mysite.com/mysite.com.key; […]
尝试在Ubuntu 15.04 + nginx服务器上续订我的letsencrypt证书时,我开始出现错误。 即使当我尝试运行certbot-auto命令,我看到以下内容: Error: couldn't get currently installed version for /root/.local/share/letsencrypt/bin/letsencrypt: An unexpected error occurred: VersionConflict: (certbot 0.11.1 (/root/.local/share/letsencrypt/lib/python2.7/site-packages), Requirement.parse('certbot==0.10.2')) Please see the logfile 'certbot.log' for more details. certbot.log文件提供了以下堆栈跟踪: Traceback (most recent call last): File "/root/.local/share/letsencrypt/bin/letsencrypt", line 11, in <module> sys.exit(main()) File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot/main.py", line 858, in main plugins = plugins_disco.PluginsRegistry.find_all() File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/certbot/plugins/disco.py", line […]
这不是一个问题,但我得到了大量的漏洞扫描器和脚本小子不断打击我的网站。 我的网站不运行WordPress,但它不断地扫描WordPress的漏洞,并尝试点击/admin /wp-admin.php等不/wp-admin.php 。 一旦他们击中黑名单中的任何URL,我想要做的是限制特定IP。 我知道我不能完全阻止脚本小子,但是我想慢下来,以阻止它。 例如: 假设我正在运行首先尝试使用/wp-admin.php的漏洞扫描程序。 Nginx会看到这个特定的位置,并将我的IP添加到一段时间内被禁止或限速的IP列表中。 有没有一种方法可以完全通过Nginx的configuration? 我知道使用OpenResty / Lua是可以实现的,但据我所知这是一个相当高效的任务。 Fail2ban也不是一个选项,因为我运行在负载均衡器后面,因此需要依赖显然iptables无法匹配的X-Forwarded-For头。
我们有以下安全网站。 如果用户打开http://name.tld ,他应该被redirect到https://name.tld 。 我们最初搞砸了安全站点域的顺序,所以http://name.tld被redirect到了https://sub.name.tld而不是http://name.tld 。 我们改变了服务器名称的顺序,但是所有的浏览器都caching了redirect。 如果我手动禁用caching的铬,它的作品。 但其他任何人都需要这样做。 我们如何强制所有的浏览器清除他们的redirectcaching(首选)或禁用告诉他们不cachingredirect? 有我们可以发送的标题吗? 这是我们的网站: server { listen 80; server_name name.tld sub.name.tld localhost sub.localhost; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name name.tld sub.name.tld localhost sub.localhost; ssl_certificate /etc/ssl/certs/fullchain.pem; ssl_certificate_key /etc/ssl/private/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; # required for large JSON files client_max_body_size 50m; #charset koi8-r; […]
我试图caching我的请求在Nginx。 我已经连接我的django服务器作为上游。 现在,我试图caching我的请求。 proxy_cache_path /var/cache/nginx/ keys_zone=one:10m; location / { proxy_cache one; proxy_cache_valid 200 302 10m; proxy_no_cache $cookie_nocache $arg_nocache$arg_comment; proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; proxy_cache_use_stale error http_502; proxy_pass http://127.0.0.1:8000; } 一切正常,但现在我已经添加了 proxy_cache_use_stale error http_502; 这个说法。 这意味着即使在出现错误的情况下也应该提供caching的内容,502响应代码。 为了testing它,我停止了我的django服务器,即使在django服务器closures的情况下,它也应该立即提供这些请求。 但它又一次发送502坏的网关。 我在这里有什么不对吗? 我怎么知道我的请求是否被caching?
我尝试在https上redirect所有stream量。 我使用AWS,乘客+ NGINX。 到目前为止,我的智能手机(Android),铬最后的版本: http : //server_name.comredirect到https … 在家里我的电脑铬最后版本reddirect以及。 但在其他计算机上,它不会redirect。 当然,无处不在的https://server_name.com工作时正确访问。 这里是我的conf: #user adrien; events { worker_connections 768; # multi_accept on; } http { passenger_root /home/ubuntu/.rvm/gems/ruby-2.3.1/gems/passenger-5.0.30; passenger_ruby /home/ubuntu/.rvm/gems/ruby-2.3.1/wrappers/ruby; server_tokens off; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://bam.nr-data.net https://js-agent.newrelic.com 'unsafe-inline' 'unsafe-eval' https://ssl.google-analytics.com https://assets.zendesk.com https://connect.facebook.net; img-src 'self' […]
我在一台vserver上使用Debian 8.7 64位进行testing。 我通过安装nginx apt-get update -y && apt-get -t jessie-backports install nginx和 nginx -v显示nginx version: nginx/1.10.3 。 我也通过openssl version -v并得到 OpenSSL 1.0.1t 3 May 2016 (Library: OpenSSL 1.0.2k 26 Jan 2017) 。 目前我有一个高效率的服务器的问题,因为我得到很多closuresfailed (SSL: error:140E0197:SSL routines:SSL_shutdown:shutdown while in init)错误,发现nginx和openssl使用1.9版本的nginx时有一些问题。 生产系统仍然使用nginx / 1.9.10。 在我想通过jessie-backports更新nginx到1.10之前,我想testing一切是否仍然有效。 在testing的同时,我也检查了openssl的版本,并得到了我上面粘贴的信息。 那是什么意思? 是openssl 1.0.1t或1.0.2k安装? 谢谢你的帮助!
我注意到使用Puma的Rails 5 App的默认池大小等于: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 这意味着您可以build立最大数量的线程作为环境variables,或者默认为5个数据库连接。 我已经看到一些使用大约600作为连接池的限制的应用程序,这使我认为它是真的与线程无关,但它似乎是用来保持绿色的性能。 确定最大线程数量的逻辑是什么?它与处理器体系结构有关吗? 数据库连接池是否完全依赖于线程,或者当拥有大量用户(大约20,000)时,我能够保持一定的灵活性吗?