标签: nginx

nginx unix域套接字错误

我使用fedora 17,当我使用unix域套接字设置带有uwsgi的nginx时,当我将套接字放置在具有适当权限的目录中时就可以了,但是当我将套接字放入其中/tmp时会导致nginx错误:

connect() to unix:/tmp/MySite.sock failed (2: No such file or directory) while connecting to upstream
Run Code Online (Sandbox Code Playgroud)

该文件确实存在并且对 nginx 用户具有读/写权限。但是是什么导致了这个错误,它真的让我发疯,有人可以弄清楚。

nginx

18
推荐指数
1
解决办法
3万
查看次数

nginx不区分大小写的重写

我试图让我的 nginx 重定向尽可能干净。我知道 ~* 不区分大小写,但我只能让它在示例 2 中工作。

示例 1

rewrite ^/foobar http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect;
Run Code Online (Sandbox Code Playgroud)

示例 2 - 这有效,但不如上面的行有效。

if ( $request_filename ~* foobar ) {
         rewrite ^ http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect;
   }
Run Code Online (Sandbox Code Playgroud)

有没有办法使用示例 1 进行不区分大小写的重定向而不会让它变得太混乱?

谢谢。

rewrite nginx

18
推荐指数
2
解决办法
2万
查看次数

使用 Nginx 镜像流量

我需要复制/镜像进入我的服务器/资源的流量。

我的意思是,我有服务器 A、B 和 N(nginx)作为网络服务器。

所有进入 N/resource 的流量 --> 重定向到 A 和 B

是否可以?

traffic nginx

18
推荐指数
2
解决办法
2万
查看次数

nginx:connect() 连接到上游时失败(111:连接被拒绝)

我一直在错误日志中看到以下错误消息,我可以访问所有资源,但我不确定错误标记的原因。

错误:

[错误] 13368#0:*449 connect() 失败(111:连接被拒绝),同时连接到上游,客户端:xxxx,服务器:myserver.com,请求:“GET /stories/mine HTTP/1.1”,上游:“ http://[::1]:5000/stories/mine ”,主机:“myserver.com”

我的 Nginx 配置

我正在将连接传递到node.js在端口 5000 上运行的集群。看不到我会错过什么?

upstream api {
    server localhost:5000;
}

server {
    listen 80; 
    server_name myserver.com;
    root /home/user/_api;


# Logging 

error_log /home/user/log/api.error.log notice;
    location / {
        proxy_redirect off;
        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;
        proxy_set_header   Host                   $http_host;
        proxy_set_header   X-NginX-Proxy    true;
        proxy_set_header   Connection "";
        proxy_cache one;
        proxy_cache_key sfs$request_uri$scheme;
        proxy_pass         http://api;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
Run Code Online (Sandbox Code Playgroud)

nginx node.js

18
推荐指数
1
解决办法
4万
查看次数

通过 docker volume 共享 unix socket - 权限被拒绝

我尝试php5-fpm通过卷与我的nginx网络服务器共享我的套接字。Fpm 和 nginx 在不同的容器中运行,我想让它们通过共享卷工作,我将 fpm 中的套接字文件放在那里。

2014/04/13 10:53:35 [crit] 33#0: *1 connect() to unix:/container/fpm/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 192.168.8.2, server: docker.dev, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/container/fpm/run/php5-fpm.sock:", host: "docker.dev"
Run Code Online (Sandbox Code Playgroud)

我已经尝试将权限设置为 777 并将组更改php5-fpm.socketwww-data.

fpm 容器的 Dockerfile

FROM ubuntu:13.10

RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y php5-cli php5-common
RUN apt-get install -y php5-fpm php5-cgi

ADD ./php-fpm.conf /etc/php5/fpm/php-fpm.conf
ADD ./pool.d/www.conf /etc/php5/fpm/pool.d/www.conf
ADD ./php.ini /etc/php5/fpm/php.ini

CMD ["/usr/sbin/php5-fpm"] …
Run Code Online (Sandbox Code Playgroud)

nginx socket docker

18
推荐指数
2
解决办法
1万
查看次数

使用 SSL 客户端证书身份验证的 Nginx 代理到后端

我有两台服务器,都有 nginx。服务器 A 正在侦听 443 并配置为使用客户端 SSL 证书进行身份验证。

服务器 B 有一个内部进程,需要通过 nginx 与服务器 A 通信。

我想在服务器 B 上配置 Nginx,它将侦听 8080(没有加密,因为它都是本地通信)和 proxy_pass 到 ServerA:443。

问题是如何注入客户端证书?我没有找到任何可以做到这一点的 proxy_xxxx 函数。

我确实知道如何使用 socat 进行等效,但我的要求是使用 nginx。

nginx proxy ssl-certificate

18
推荐指数
3
解决办法
9万
查看次数

Shellshock:我如何知道我的服务器是否受到威胁 + 需要注意的可疑文件

三个问题希望有人能帮忙解答:

  1. 我怎么知道我的服务器是否已经由于 Shellshock 错误而受到损害?
  2. 如果它被入侵,是否有一个特定的文件夹我应该在其中查找恶意文件?
  3. 恶意文件是什么样子的?

我正在运行 CentOS 6,LEMP 堆栈

nginx centos

18
推荐指数
3
解决办法
1万
查看次数

Nginx 不缓存数据

我在 nginx 代理后面有一个 REST API。代理工作正常,但我无法缓存任何响应。任何帮助将非常感激:

Nginx 配置:

worker_processes  10;
error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
        proxy_cache_path /path/to/cache/dir keys_zone=one:60m;
        proxy_cache_methods GET HEAD POST;

     upstream backend {
        server server1 backup;
        server server2 weight=5;
    }
    access_log  logs/access.log;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       7076;
        server_name  localhost;
        #charset koi8-r;
        access_log  logs/host.access.log;

        location / {
            add_header 'Access-Control-Allow-Origin' *;
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Headers' 'Content-Type,Accept';
            add_header 'Access-Control-Allow-Methods' 'GET, …
Run Code Online (Sandbox Code Playgroud)

nginx proxy cache solr

18
推荐指数
2
解决办法
4万
查看次数

子域的 Nginx 冲突服务器名称

我目前有一个在 Nginx 上为 foo.domain.com 运行的虚拟主机,一切正常。

我为要添加的新子域创建了一个新文件,名为 bar.domain.com。我对两者使用相同的设置。

当我重新启动 Nginx 时,我得到

Restarting nginx: nginx: [warn] conflicting server name "" on 0.0.0.0:443, ignored nginx.
Run Code Online (Sandbox Code Playgroud)

当我访问 bar.domain.com 时,我看到了我应该看到的内容,但是当我访问 foo.domain.com 时,我看到了 bar.domain.com 链接到的页面。

upstream php-handler {
    server unix:/var/run/php5-fpm.sock;
}

server {
        listen 80;
        server_name foo.domain.com;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443;

        ssl on;
        ssl_certificate      [path_foo]/cacert.pem;
        ssl_certificate_key  [path_foo]/privkey.pem;

        root [path]/foo;

        ...
}
Run Code Online (Sandbox Code Playgroud)

酒吧

server {
        listen 80;
        server_name bar.domain.com;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443;

        ssl on;
        ssl_certificate      [path_bar]/cacert.pem;
        ssl_certificate_key …
Run Code Online (Sandbox Code Playgroud)

ssl nginx virtualhost

18
推荐指数
1
解决办法
6万
查看次数

Nginx 仅在特定位置验证客户端证书

我们使用 Nginx 作为我们的 Web 应用程序服务器的反向代理。Nginx 处理我们的 SSL 等,但在其他方面只是充当反向代理。

我们希望为请求提供有效的客户端证书,/jsonrpc但不要求在其他任何地方使用它们。我们发现的最好方法是

server {
  listen       *:443 ssl;

  ssl on;
  ssl_certificate         /etc/nginx/server.crt;
  ssl_certificate_key     /etc/nginx/server.key;
  ssl_client_certificate  /etc/nginx/client-ca.crt;

  ssl_verify_client optional;

  location /jsonrpc {
    if ($ssl_client_verify != "SUCCESS") { return 403; }

    proxy_pass          http://localhost:8282/jsonrpc-api;
    proxy_read_timeout  90;
    proxy_redirect      http://localhost/ $scheme://$host:$server_port/;
  }
}
Run Code Online (Sandbox Code Playgroud)

这适用于大多数浏览器,但某些浏览器(例如 Safari 和 Chrome-on-Android)最终会提示用户无论在网站上的哪个位置都提供客户端证书。

我们如何让 Nginx 接受但并不真正关心除我们/jsonrpc所在位置以外的任何地方的客户端证书?

nginx ssl-certificate

18
推荐指数
2
解决办法
2万
查看次数

标签 统计

nginx ×10

proxy ×2

ssl-certificate ×2

cache ×1

centos ×1

docker ×1

node.js ×1

rewrite ×1

socket ×1

solr ×1

ssl ×1

traffic ×1

virtualhost ×1