比方说,我有一个简单的nginxconfiguration与uwsgi后端对话: server { listen 9900 default_server; listen [::]:9900 default_server; location / { include uwsgi_params; uwsgi_pass unix:/tmp/service-foo.sock; } } 这个服务有一些url( /renderer/… )的子集,总是非常慢,在重负载的情况下,整个网站都会崩溃。 我想要的是用两个后端replace这个,就像这样: server { listen 9900 default_server; listen [::]:9900 default_server; location / { include uwsgi_params; uwsgi_pass unix:/tmp/service-foo.sock; } location ~ ^/renderer/[0-9]+/ { include uwsgi_params; uwsgi_pass unix:/tmp/service-renderer.sock; uwsgi_read_timeout 30s; uwsgi_send_timeout 30s; uwsgi_request_buffering on; } } …我的天真的期望是,这将解决这个问题,通过允许/renderer/…请求缓慢服务一个,而其余的网站保持响应。 […]
我希望以/api开始的所有内容都被定向到http://localhost:3007 这是我的nginx.conf user nginx; worker_processes 1; daemon off; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root /usr/html; index index.html index.htm; } location /api { proxy_pass http://localhost:3007; proxy_read_timeout 5m; } error_page 500 502 503 504 /50x.html; location = /50x.html […]
我有一个非常基本的设置与nginx安装在运行在gunicorn服务器上的django应用程序。 gunicorn conf很简单,下面是: exec gunicorn myapp.wsgi:application \ –workers 5 –reload 我已经设置了nginx服务器,将默认服务器上的所有传入stream量proxy_pass设置为127.0.0.1:8000。 但是,当我到服务器的IP地址,我看到默认的nginx 404屏幕。 所以我假设stream量是由nginx服务器传递的代理,但不知何故没有正确路由,并没有回应,这迫使nginx返回404。我究竟是在这里做gunicorn或nginxconfiguration错误? 作为参考,下面是我的完整的nginx.conf文件: user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr – $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; […]
所以我遇到了一个问题,在其他方面相同的主机上看起来nginx的configuration看起来是完全相同的,但是它只是在一个而不是另外两个上运行。 本质上试图通过https连接导致连接被拒绝的服务器,但另一个工作正常。 这显然是在nginx级别发生的,因为请求甚至没有把它运行到nginx后面的进程,修复nginx conf就解决了这个问题。 nginx.conf: user www-data; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## client_max_body_size 50M; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings […]
我正在尝试在http://example.com/supervisor上提供supervisord网页界面 尝试了好几个小时后,我用正斜杠( http://example.com/supervisor/ )正确工作。 我得到它显示没有太斜杠,但没有图像/ CSS等的作品。 我是nginx的新手,所以我猜我的重写规则有些问题。 第一次重写是我试图添加一个结尾的斜杠。 supervisord.conf [unix_http_server] file = /tmp/supervisor.sock ; (the path to the socket file) chmod=0700 ; socket file mode (default 0700) nginx.conf location ~* ^/supervisor/? { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_x_host; proxy_set_header X-NginX-Proxy true; rewrite ^(.*[^/])$ $1/; rewrite /supervisor/(.*) /$1 break; proxy_pass http://unix:/tmp/supervisor.sock:; proxy_redirect off; […]
我已经build立了一个服务器,通过一个集装箱式的Nginx,从标准的URL提供一个网站。 这个网站工作得很好。 在郊区(/ gogs /),我将所有的请求都委托给了GOGS的一个实例。 这也是容器化的,容器通过定制的Dockernetworking进行通信。 我的问题是,所有来自GOGS的资产都没有被加载。 我只得到404错误。 这是来自nginx日志: [error] 7#7: *38 open() "/website/gogs/js/libs/clipboard-1.5.9.min.js" failed (2: No such file or directory), client: $IP, server: website, request: "GET /gogs/js/libs/clipboard-1.5.9.min.js HTTP/2.0", host: "website" /网站是安装在Nginx容器中的卷。 这是我的代理configuration: location /gogs/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://gogs:3000/; } 我的大部分Nginxconfiguration都基于https://github.com/h5bp/server-configs-nginx 。 这可能是一个问题吗? 我如何解决我所看到的404错误? 编辑: 日志/ gogs.log […]
我可以告诉nginx在10个连续的404之后超时和断开连接吗? 帮助防止像nikto或dirbuster这样的文件枚举器。 我不希望nginx完全停止接受请求(显然),而只是放弃404而不是返回404.html。
所以我似乎有一个看似简单的问题,但我对此很新。 我已经为我的开发环境设置了一个反向代理,而且我有几台运行不同应用程序的机器,所以我明确地在不同端口的本地主机上运行它们。 每当我打到一个位置说localhost/location1和localhost/location2它做一个proxy_pass localhost:8000和localhost:4343 。 但是,当我在浏览器中查看下面的根位置时,url将更改为proxy_pass https://develop.example.com/;的实际URL proxy_pass https://develop.example.com/; 而不是只说本地主机,我期望它像所有其他人一样做。 那么为什么这会改变url? 我甚至尝试做一个代理传递到谷歌,如预期的那样工作,只是说本地主机,但显示谷歌404页面。 任何见解和或如何我可以去debugging这个build议,将不胜感激。 location / { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-URI $request_uri; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Published-On https://develop.example.com/; proxy_pass https://develop.example.com/; #proxy_pass http://www.google.com/; index index.php; }
我有一个在相同的docker集群中运行的API和Web应用程序。 1)最好有一个nginx容器负载平衡两个或有两个单独的nginx容器负载平衡每个分开? 2)如果前者,我试过这个: server { listen 80; server_name xxy.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name xxy.com; location / { proxy_pass http://web_app:8000; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } server { listen 443 ssl; server_name yyyy.com; location / { proxy_pass http://api_backend:5000; proxy_redirect off; […]
我想要允许每个IP 10个请求/分钟。 不应该拖延要求,不要爆发。 我严格地希望允许10个请求/分钟。 limit_req_zone $binary_remote_addr zone=login:10m rate=10r/m; limit_req_status 429; server { location /login { limit_req zone=login nodelay; } # … } 但看着我的开发者控制台,限制不能按预期工作(所有请求都在1分钟内完成)。 第二个请求已被拒绝。 我期望它看起来像(10成功的请求,然后429,直到一分钟过去了):