我有一个VPS有14个域名,我设置了letkencrypt自动为每个包含所有子域名的域名检索一个单独的证书。 所以,我有14个证书。 很显然,将所有域名放在同一个证书中是不可取的,因为很快我将为Letsencrypt的每个证书创build最多100个域/子域。 所以,我很高兴一个月,直到我发现nginx为除了一个(它自动提取 – 或者我将设置 – 作为端口443的默认服务器)之外的所有域提供错误的证书。 经过很多头痛之后,我发现每个SSL证书都必须有自己的IP,而不是共享的IP。 然后我也发现有SNI作为解决这个问题的方法。 $ nginx -V TLS SNI support enabled 所以长话短说; 问题是不pipe我做什么nginx固执地服务了错误的cert: $ curl –insecure -v https://babaei.net 2>&1 | awk 'BEGIN { cert=0 } /^\* Server certificate:/ { cert=1 } /^\*/ { if (cert) print }' * Server certificate: * subject: CN=babaei.net * start date: Aug 28 13:30:00 […]
在我的Nginx服务器上的/ var / log中有php5-fpm.log和php_error.log php_error.log有各种通知,以便它的大小增长到数百MB。 我试图find哪个php.inipipe理这个文件,但没有运气。 php –ini 得到: Configuration File (php.ini) Path: /etc/php5/cli Loaded Configuration File: /etc/php5/cli/php.ini Scan for additional .ini files in: /etc/php5/cli/conf.d Additional .ini files parsed: /etc/php5/cli/conf.d/05-opcache.ini, /etc/php5/cli/conf.d/10-pdo.ini, /etc/php5/cli/conf.d/20-apcu.ini, /etc/php5/cli/conf.d/20-curl.ini, /etc/php5/cli/conf.d/20-gd.ini, /etc/php5/cli/conf.d/20-geoip.ini, /etc/php5/cli/conf.d/20-horde_lz4.ini, /etc/php5/cli/conf.d/20-intl.ini, /etc/php5/cli/conf.d/20-json.ini, /etc/php5/cli/conf.d/20-ldap.ini, /etc/php5/cli/conf.d/20-mcrypt.ini, /etc/php5/cli/conf.d/20-memcache.ini, /etc/php5/cli/conf.d/20-mongo.ini, /etc/php5/cli/conf.d/20-mysql.ini, /etc/php5/cli/conf.d/20-mysqli.ini, /etc/php5/cli/conf.d/20-pdo_mysql.ini, /etc/php5/cli/conf.d/20-pdo_sqlite.ini, /etc/php5/cli/conf.d/20-pspell.ini, /etc/php5/cli/conf.d/20-readline.ini, /etc/php5/cli/conf.d/20-sasl.ini, /etc/php5/cli/conf.d/20-sqlite3.ini, /etc/php5/cli/conf.d/20-tidy.ini, /etc/php5/cli/conf.d/20-xdebug.ini, /etc/php5/cli/conf.d/20-xmlrpc.ini /etc/php5/cli/php.ini设置为 error_reporting […]
我目前在nginx后面build立了一个web应用程序,需要将它移到Apache httpd。 我真正想要重新实现的一个function是基于X-Accel-Redirect的function。 与X-Sendfile不同, X-Accel-Redirect值被视为一个URL,所以我可以执行所有相同的function,我可以在任何其他位置。 在这种情况下,我使用它从外部服务器获取实际文件,而不是直接从本地服务器获取文件。 这里是相关的configuration: location ~* ^/secure-download(.*) { internal; set $file_info 'attachment; filename=${upstream_http_filename}'; add_header Content-Disposition $file_info; # proxy configuration code here proxy_cache cachename; proxy_cache_valid 200 302 60m; # cache successful responses for 60min proxy_cache_valid 404 1m; # cache missing responses for 1min resolver 172.31.0.2 8.8.4.4 8.8.8.8 valid=300s; resolver_timeout 10s; proxy_pass 'https://proxy-server.example.org/$1'; } […]
我想用Nginx部署一个Flask和uwsgi应用程序,一切正常,我可以让我的应用程序在我的域上工作: test.example.com:8080 : test.example.com:8080 。 问题是我不能使其在默认端口80下工作,当我尝试浏览test.example.com时,从Nginx中获得以下错误消息: 2016/09/02 10:21:29 [error] 2947#2947: *3 no live upstreams while connecting to upstream, client: 75.xxx.xxx.136, server: test.example.com, request: "GET /favicon.ico HTTP/1.1", upstream: "uwsgi://localhost", host: "test.example.com", referrer: "http://test.example.com/" 这是我的uwsgi命令: uwsgi –socket 8080 –chdir /var/www/test.example.com –protocol=http –module myapp:app 这是我的Nginxconfiguration: server { listen 80; root /var/www/test.example.com; server_name test.example.com; location / { include uwsgi_params; […]
我用nginx设置了OSRM(开源路由机器)。 它的工作原理是这样的。 但是,问题是我不能让它在ssl上工作。 我已经设置了端口443,通过Nginx的站点与https一起工作,一切都很好,只是OSRM服务,或者如何调用它,这是在Ubuntu机器上运行,它不起作用。 当我访问/位置的页面说: 400错误的请求 普通的HTTP请求被发送到HTTPS端口 这是我的osrm.config文件: upstream osrm { # commented out server 0.0.0.0:5000; server 0.0.0.0:443; } server { listen 443; ssl on; ssl_certificate /my/valid/path/working; ssl_certificate_key /my/valid/path/working; server_name my_server_sub_domain_is_here; location /mypath { proxy_pass http://osrm/; proxy_set_header Host $http_host; } }
我正在使用Nginxstream模块来通过UDP反向代理OpenVPN。 反向代理另一个协议,如DNS工程,但是当我尝试反向代理UDP时,我得到来自OpenVPN的消息: Sun Sep 4 14:45:32 2016 us=371479 MULTI: multi_create_instance called Sun Sep 4 14:45:32 2016 us=371587 127.0.0.1:54025 Re-using SSL/TLS context Sun Sep 4 14:45:32 2016 us=371618 127.0.0.1:54025 LZO compression initialized Sun Sep 4 14:45:32 2016 us=371692 127.0.0.1:54025 Control Channel MTU parms [ L:1542 D:1212 EF:38 EB:0 ET:0 EL:3 ] Sun Sep 4 14:45:32 2016 […]
我做了大量的研究,但没有看到任何具体的cachingbuild议我的服务器configuration。 DO single Droplet 2GB Ram Ubuntu 16 Nginx Php-fpm 7 Mysql SSL must cache logged in users too W3总caching在这个设置上performance不佳,因此我正在考虑放弃这一切。 这使我没有caching,在这一点上没有CDN。 任何帮助指向正确的方向关于我的caching需求,将不胜感激。
我使用nginx根据他们的位置redirect用户。 我只想添加一个参数到查询string,只要该参数尚未定义 – 如果它被定义,我不想改变它。 这个参数被称为tag 。 这是我第一次尝试。 我希望它会落在第二个位置,如果它在任何地方的URL中都有tag= string,如果它有一个查询string,但是丢失了tag ,则会落到第三个位置,如果没有查询string,则会落到第一个位置。 location / { return 302 https://$local_site$request_uri?tag=mytag; } location /tag=/g { return 302 https://$local_site$request_uri; } location /\?/ { return 302 http://$local_site$request_uri&tag=mytag; } 然后我知道,当按位置钻取时你看不到查询string。 而且我也知道如果是邪恶的话 有没有办法做到这一点,而不使用?
我们正在研究我们网站的一个主要重构。 为了推广,我们希望开始发送一小部分用户到新版本。 我们不希望他们在新旧之间来回切换,所以我们打算在第一次访问时设置一个cookie,然后用它来决定做什么。 我们知道如何使所有这些工作,除了改变基于cookie的nginxconfiguration。 除了我们需要使用不同的根之外,configuration大部分是相同的,而且两者之间的try_files是不同的,因为旧版本的结构像page_name / index.php,新版本通过一个index.php文件路由所有内容。 为了更改基于cookie的根,我使用地图工作,但我不知道如何处理try_files部分。 我试图避免使用,如果基于if-is-evil。 旧版本根本不使用try_files,新版本使用try_files $uri $uri/ /index.php?$args; 如果在这种情况下使用或不使用,最好的方法是什么?
我在nginx访问日志中看到了一些奇怪的日志。 我已经将/ admin页面移动到/ adminSecretUrl,我的网站只能通过https访问(除/robots.txt)。 95.221.204.97 – – [11/Sep/2016:17:09:12 +0200] "GET /adminSecretUrl HTTP/1.1" 444 0 "http://yandex.ru/clck/jsredir?from=yandex.ru%3Bsearch%3Bweb%3B%3B&text=[…]" "Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0" yandexsearch引擎如何知道这个url? 这是正常的吗?