Articles of nginx

configurationnginx以提供静态文件

我试图从运行Debian 8的Google计算引擎实例中提供静态文件(HTML,JS和CSS)。我使用git通过命令将Web应用程序克隆到文件夹/var/www/prod/app sudo git clone <my repo> 我在启用站点的文件夹app.conf创build了一个conf文件。 这是内容 server { listen 80; root /var/www/prod/app; location / { } } 当我键入我的机器的IP地址/path时,这个configuration是否足以使我的机器提供文件? 当我在浏览器中input实例的IP地址时,我看到了welcome to nginx页面的welcome to nginx 。 但是没有任何prod / app中的文件被提供。 我尝试的所有path都得到了404。 有人可以帮我configuration这个。

logging原始请求者IP而不是某些HTTP请求的转发代理IP(nginx日志)

我使用nginx作为我们的应用程序Web服务器(gunicorn;它是一个Django应用程序)前面的反向代理。 打这个Web应用程序的大多数用户实际上是通过一个转发代理路由的。 由于请求通过转发代理服务器传递,这些情况下的IP地址始终来自代理服务器,而不是来自原始请求者。 我想纠正这种情况。 来自转发代理的所有请求都包含一个via:proxy的头部。 在这样的请求中,原始请求者IP被发送到称为X-IORG-FBS-UIP (还有X-FORWARDED-FOR )的单独的HTTP报头字段中。 我的问题是,我怎样才能configurationnginx,以便它检测请求是否via:proxy标题,如果是,从X-IORG-FBS-UIP标头logging原始的请求者IP? 一个说明性的例子会很棒; 提前致谢! 我的nginx是v 1.4.6 请注意,我没有使用正向代理的IP范围。 如果我这样做,解决这个问题的一种方法是设置etc/nginx/conf.d/proxies_acl.conf : set_real_ip_from 1.2.3.0/22; set_real_ip_from 23.22.20.0/22; real_ip_header X-IORG-FBS-UIP;

如何模拟服务器testing的高带宽stream量

我正在开发一个类似CDN的项目,我想强调testing我的服务器,这是一个运行在10Gbps VPS上的最小的nginx + nodejs + ubuntu。 我想模拟看起来更像服务器的预期用途:大约10GB的二进制数据由nodejs服务于nginx后面。 与服务器的连接可以是http或https,每个连接都是持久的,每个连接总共需要1MB的块数据,总共需要10-20MB。 一些连接可能在100mbps,低延迟(连接的20%),有些连接可能会低至100-200kbps,砰平时间为500ms(连接的5%)。 我的目标是产生接近10Gbps理论上限的stream量,并尝试监控服务器状态,收集分析数据,以便能够看到我的东西在负载下如何工作。 连接到我的服务器的客户端也是我自己的代码。 在所有的客户端,我想保存日志,然后结合并分析它们,以估计当我的服务器的请求负载合并为理论限制的50%,75%,… 90%,100%,120时,整个系统的总体结果%等。在这些负载期间,我的目标是观察服务器:RAM使用,CPU负载,连接丢失率,validation日志logging(以确保组合的客户端logging匹配服务器logging的结果)。 我的计划是首先在1Gbps服务器上进行testing(在不同地理位置的10-15 x 100mbps服务器上模拟客户端)。 由于我控制客户端,我只是让他们运行某些情况下,并以不同的速度节stream下载,以模拟缓慢的clinets。 如果你需要强调testing这样的设置,你会怎么做? 我的方法有什么问题吗?为什么?

NGINX不评估variables?

我有一个以下的nginxconfiguration: http { (…) limit_conn_zone $binary_remote_addr zone=limitapinoauth:16m; limit_conn_zone $remote_user zone=limitapi:32m; map $remote_user $zone { default 'limitapi'; '' 'limitapinoauth'; } map $zone $num { 'limitapi' 100; default 200; } server { listen 80 default; root /var/www/example.com/public_html; limit_conn $zone $num; } (…) } 预期的行为是映射variables被评估为在最后一行使用,但它们不是。 任何想法为什么? 我得到以下错误: nginx: [emerg] invalid number of connections "$num" 当我将$ num更改为整数(即​​200)时,错误是: nginx: [emerg] […]

使用Docker在VPS的端口80上运行两个应用程序

我在Digital Ocean上有VPS,我需要使用Docker运行两个独立的Django应用程序。 如果我运行第一个应用程序使用 docker compose up -d都很好,但是当我运行第二个应用程序,我得到: 错误:对于nginx无法启动服务nginx:驱动程序无法编程端点上的外部连接cockieynginx1(9830ef0c07ed965372d02af22b9263697b6e14822ce4b6717403b78ba68a4e89):绑定0.0.0.0:80失败:端口已分配 我的主机系统是Ubuntu 16.04。 我应该使用反向代理在主机系统上设置nginx吗? 如何“连接”这与我的Docker应用程序? 这两个应用程序使用此Docker设置: https : //github.com/pydanny/cookiecutter-django/tree/master/%7B%7Bcookiecutter.project_slug%7D%7D (请参阅docker-compose.yml和撰写文件夹)。

nginx密码保护不起作用

我在我的网站着陆页上设置密码时遇到问题。 我已经看过这个问题几次,并试图在每个postupvoted修复。 到目前为止,我尝试更改.htpasswd的权限,更改.htpasswd的位置,使用.htpasswd的绝对path位置,并将auth_basic和auth_basic_user_file指令放置在“位置”和主“服务器”块之外,但stream行请求用户名和密码的问题仍然没有显示,当我去我的url。 我想要的是当我浏览到我的主要URL没有任何特定的目录或文件时,popup密码提示。 我查看了很多教程,并使用了htpasswd命令来创build.htpasswd文件。 从我所了解的这是/ etc / nginx / sites-enabled / default的正确configuration。 我在这里做错了什么? 这是我的configuration文件: server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; server_name example.com www.example.com; return 310 https://$server_name$request_uri; location / { try_files $uri $uri/ =404; auth_basic "Under Construction"; auth_basic_user_file /etc/nginx/.htpasswd; } }

如何从NGINX获得Gunicorn的真正的远程IP?

我总是获得本地主机作为远程IP。 我的应用程序运行在Nginx-Gunicorn下 这是我对nginx的configuration: server { listen 80; server_name api.mydomain.com; charset utf-8; client_max_body_size 1M; location / { set_real_ip_from 127.0.0.1/32; proxy_set_header X-Forwarded-Host $host:$server_port; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://aiohttp; } access_log /var/log/nginx/api_access.log; error_log /var/log/nginx/api_error.log; } 这是我的日志格式gunicorn: access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"' 而我的gunicorn日志是这样的: 127.0.0.1 – – [28/Apr/2017:12:52:53 +0000] "GET /entrypoint?p=2&d=123456 […]

仅在nginx中的父目录的目录列表

我试图从Apache切换到nginx,但是我想要的只是允许父目录(在我的情况下是根目录)的目录列表。 例如,我想允许根目录中的目录列表,但我不想有任何子目录(即/ somedir)列表。

nginx全新安assembly置

我刚刚在我的服务器上安装了nginx, 现在我可以看到 ps aux | grep nginx 它正在执行与我的用户(这是正确的,或者它应该与根运行? 无论如何,我无法做任何事情,不能阻止它,因为 nginx -s stop 输出: nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied) 2017/05/02 04:03:34 [warn] 2482#2482: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2 2017/05/02 04:03:34 [notice] 2482#2482: signal process started […]

NginX的“proxy_ssl_certificate”问题,它用于什么?

从文档中不完全清楚如何使用proxy_ssl_certificate指令。 我有这样的设置: Server InternalA <— HTTPS —> Server NginxB <—- HTTPS —-> remote-website -A 服务器NginxB需要将GET / POST(在InternalA中生成)转发到远程网站,并使用SSL返回结果。 我的NginxB服务器正在运行SSL +准备的所有证书。 但是,在代理remote-website-A的“location {”标签下,我需要为SSL设置更多的设置吗? 他们会简单地匹配“位置”标签上面的SSL设置吗? #proxy_ssl_certificate src.crt; #proxy_ssl_certificate_key srv.key; #proxy_ssl_ciphers TLSv1.2; #proxy_ssl_password_file keyfile.pz; #proxy_ssl_protocols TLSv1.2; #proxy_ssl_trusted_certificate root.crt; #proxy_ssl_verify on; 还是这些proxy_ssl指令用于个人使用我的代理? 问题:服务器NginxB SSL-handshake是否成功与remote-website-A进行双向SSL而不设置proxy_ssl参数?