Articles of nginx

Nginxconfiguration托pipe一个Web应用程序和一个静态网站

现在我使用Nginx作为反向代理来服务我的Node.js应用程序。 这是/etc/nginx/sites-enabled/default文件中的configuration server { listen 443; server_name example.com; ssl on; # Use certificate and key provided by Let's Encrypt: ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; # Pass requests for / to localhost:8000: location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_pass http://localhost:8000/; proxy_ssl_session_reuse […]

如何configurationnginx代理端口和主机与每个不同的SSL证书?

(已更新)我想代理这样的请求: https://port123.host.com:85/any/path ==> http://server85:123/any/path https://port567.host.com:85/any/path ==> http://server85:567/any/path https://port123.host.com:86/any/path ==> http://server86:123/any/path https://port567.host.com:86/any/path ==> http://server86:567/any/path 你会如何推荐我做到这一点? (我知道这是一个有趣的build筑) 服务器声明没有使用SSL,而不是。 server { listen 86 ssl; server_name port123; ssl_certificate CERT123; ssl_…; localtion / { proxy_pass…. } } server { listen 86 ssl; server_name port567; ssl_certificate CERT567; ssl…; localtion / { proxy_pass…. } } 我发现这是nginx的一个已知限制(单端口和单IP上的多个SSLS)。 但我不知道是否有任何简单的解决方法。 我无法使用SAN,因为我拥有的每台服务器实际上都是通配符证书的通配符。

指向2个URL到nginx服务器上的同一个站点

我们有这个网站已经很好的工作,但我已经把任务指向另一个url到同一个网站。 这个想法是,两个url将显示在地址栏,但只有一个网站将显示。 我向我的DNSpipe理站点添加了一个Alogging,以将新的域名指向我的旧站点所在的服务器的IP地址,并接收传统的页面 “欢迎来到nginx!如果你看到这个页面,…” 因此,在研究如何configuration我的服务器,我遇到了这个看起来很有希望的网站 ,使任务看起来很简单。 所以我所做的是在我的/etc/nginx/sites-available/beta.conf和我的/etc/nginx/sites-enabled/beta.conf中重复我的server { … } (请注意唯一的区别server块之间是server_name )。 nginx.conf: user www-data; worker_processes 4; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type […]

uwsgi错误 – connect()unix:/home/user/www/www.sock失败

我很困惑。 我犯错的地方? 项目文件位置: /home/username/www /etc/uwsgi/sites/mysite.com [uwsgi] project = www base = /home/username uid = www-data gid = www-data chdir = %(base)/%(project) home = %(base)/.virtualenvs/%(project) module = %(project).wsgi:application master = true processes = 5 socket = %(base)/%(project)/%(project).sock chmod-socket = 664 vacuum = true /etc/init/uwsgi.conf: description "uWSGI application server in Emperor mode" start on runlevel [2345] stop […]

为什么需要让Gunicorn使Django与nginx一起工作?

为什么Django需要像Gunicorn这样的服务器来处理NGINx? 为什么nginx不够?

奇怪的东西附加到浏览器请求

从我的nginx日志: 444 MYIPADDRESS – – [27/Apr/2017:16:30:42 +0000] "GET /mypage.htm?sa=X&ved=0ahUKEwi1kILLh8XTAhUl2oMKHZTaBq0Q_B0IGjAC HTTP/1.1" 0 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 10_1_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) GSA/23.1.148956103 Mobile/14B100 Safari/600.1.4" "-" 我几个月来一直忽略这个,但是这个请求不断的出现。 首先,我没有任何代码来处理URL请求中的问号之后的任何内容。 我的网站是90年代的。 所以没有理由要这样的要求出现。 其次,我使用nginx来捕捉对我的网站没有意义的请求古怪,问号是一组我不使用的字符,因此它触发我的nginx地图。 我得到了我认为是模糊的黑客,这是在networking服务器上投掷的怪异东西,因此陷阱。

让我们encryptionvalidation失败

尝试使用Let's Encrypt生成新的SSL证书,请遵循本指南 – https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14- 04但是正在validation失败。 我确定我的DNS设置正确,并指向我的服务器的IP地址。 我有一种感觉,我的webroot是不正确的。 在我的/etc/nginx/sites-available/default我有allow all参数设置 – server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.php index.html index.htm; server_name localhost; location ~ /.well-known { allow all; } location / { try_files $uri $uri/ =404; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { […]

Nginx反向代理到相同的Ajax应用程序,select哪一个与url

我需要一个反向代理,能够将请求转发给具有相同体系结构但不相同的上游应用程序。 我无法控制在上游服务器上运行的代码。 这是一个与挤奶机器人接口的商业产品。 在过去的16个月中,我一直使用Nginx将请求上传到一个服务器,使用如下的位置块: location /T4C { proxy_pass http://192.168.10.4/T4C/; proxy_read_timeout 90; } 它的工作正常,但不幸的是,Web应用程序是这样写的,每隔5秒将其redirect到“http:// ip /T4C/Content/StartPage.aspx”。这意味着我的位置名称必须始终为“/ T4C “如果我尝试/富,它会加载启动页面,但只要其中一个刷新触发,它会超时尝试访问/T4C/Content/StartPage.aspx我试图使用cookie: location /crews { add_header Set-Cookie targetip=192.168.10.4/; #Tried with and without the slash proxy_pass http://127.0.0.1/T4C; } location /T4C { proxy_pass http://$cookie_targetip/T4C/; }#Tried with and without the slashes, all permutaions 这导致了一个redirect循环,或500内部服务器错误的原因,我不明白(我认为500没有设置cookie时发生) 我也尝试过重写,现在我正在更多地考虑这个问题,但是我不太了解这个机制。 我也尝试阅读“起源”,但这些例子似乎是A / Btesting或负载平衡。 我想在这里清楚地表明,用户需要能够通过URL来select他们连接到的后端服务器,然后即使浏览器将不断尝试将其指向/ T4C / ***,该select仍然存在我知道理想的情况是改变webapp,但不幸的是,这超出了我的控制范围。 这些系统都编程相同,代码不是我的,我也不能改变它。 […]

添加服务器块中断子域NGINX

我目前已经使用以下服务器块将所有HTTP连接redirect到HTTPS: server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 301 https://$host$request_uri; } 这工作得很好。 我也使用以下服务器块在子域上运行webapp: server { listen 443 ssl; server_name gitea.pyrosoftsolutions.co.uk; ssl_certificate /etc/ssl/certs/gitea.pyrosoftsolutions.crt; ssl_certificate_key /etc/ssl/private/gitea.pyrosoftsolutions.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; ssl_prefer_server_ciphers on; ssl_dhparam /etc/ssl/dhparam/gitea.dhparam.pem; proxy_cookie_domain ~(?P<secure_domain>([-0-9a-z]+\.)?[-0-9a-z]+\.[az]+)$ "$secure_domain; sec$ location / { add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header Content-Security-Policy "default-src 'self'; script-src […]

nginx反向代理apache url静默重写和https重写

我有一个nginx + Apacheconfiguration运行。 我对nginx非常新,我有相当长的时间来学习它。 首先我想做一个基本的重写。 根据我的理解,当nginx被用作反向代理时,来自apache的.htaccess仍然可以工作。 可悲的是 – 我的理解不完全正确 – 有些部分是有效的,有些则不是。 所以我试图用.htaccess做一个基本的重写 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/?index.* /fp/ [P] 我发现在.htaccess中使用[P]标志而不是正常的重写 – 会导致无法find/index.html的错误(在整个站点上没有任何index.html如此清晰它不能被发现)。 我也尝试过使用[L]标志,而不是像我期望的那样默默转发,而是做了一个redirect,所以用户可以在地址栏中看到/ fp /而不是我正在寻找的结果。 所以 – 我把redirect移到了nginxconfiguration。 这似乎工作正常。 我做的nginxredirect是非常基本的使用if语句 if ($uri = '/'){ rewrite / /fp/ break; } 这个redirect只会redirect/不在/index.php或其他任何文件上。 接下来我有一个名为/login.php的文件。 我想转发用户到https://如果通过http://访问 所以我试图用$_SERVER['REQUEST_SCHEME'];做一个apachescheme检查$_SERVER['REQUEST_SCHEME']; 问题是 – 这是返回http是否其https://或http:// login.php在/ 所以对于初学者来说,我怎么才能让httpredirect到https只在login.php页面上。 我也应该注意到我试图做一个从httpredirect到https使用.htaccess,但作为服务器返回http和从来没有https导致无限循环。 除此之外,为什么apache的.htaccess [P]标志导致searchindex.html,并且为什么silectredirect突然公开? 如果我需要显示我的configuration […]