标签: nginx

为什么nginx进程与用户nobody一起运行

我试图将 nginx 设置为与我的一个 rails 应用程序一起运行,当查看 的输出时ps -e | grep nginx,我意识到 nginx 工作进程与用户 nobody 一起运行。

它们没有作为 www-data 运行的原因是什么?

ubuntu nginx web-server apache-2.2

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

Nginx:相对于 conf 文件的根路径

是否可以指定root相对于包含 conf 文件的路径?

我们正在开发一个 Web 应用程序,并app-nginx.conf在项目目录中保存具有应用程序特定配置的文件。我希望能够将此文件包含到 main 中,nginx.conf并具有root正确引用所需项目子目录的路径。例子:

# /etc/nginx/nginx.conf
http {
    include /absolute/path/to/app/app-nginx.conf
}


# /absolute/path/to/app/app-nginx.conf
server {
    server_name localhost;
    listen 9090;

    root ./app;
}
Run Code Online (Sandbox Code Playgroud)

使用类似配置启动 nginx 后,nginx 尝试解析./app相对于 nginx 安装目录(/usr/local/Cellar/nginx/1.4.3/在我的情况下)的路径,而不是应用程序的目录。

nginx

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

“低地址位没有意义”是什么意思?

我试图限制从 Internet 访问我博客上的登录页面,并且只能从我的 Intranet 访问它。

因此,我定义了以下位置

location ~/ghost/signing {
    allow 192.168.0.1/24;
    deny all;
}
Run Code Online (Sandbox Code Playgroud)

当我重新启动 Nginx 时,我收到以下警告:低地址位192.168.0.1/24/etc/nginx/sites-enabled/site

此外,我无法从我的 Intranet 访问该位置。

所以,我猜允许语句没有“加载”并且我最终拒绝了对该/ghost/signin页面的所有访问。

为什么低地址位毫无意义,我应该如何表述语句以使其按预期工作?

我试图用谷歌搜索低地址位是没有意义的,但我最终只得到了我认为是俄语的帖子,而且我不知道如何从俄语翻译。

nginx

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

如何设置systemd服务依赖?

在 CentOS 7 系统启动期间 nginx 启动失败并出现以下错误:

2014/08/04 17:27:34 [emerg] 790#0: bind() to a.b.c.d:443 failed (99: Cannot assign requested address)
Run Code Online (Sandbox Code Playgroud)

我怀疑这是由于网络接口在尝试绑定到该 IP 地址以通过 SSL 为虚拟主机提供服务之前尚未启动而发生的。

我的猜测是我需要将 network.service 指定为 nginx.service 的要求,但我根本无法在 /etc/systemd/ 中找到网络服务。

如何在 systemd 中配置服务顺序或依赖项?

nginx centos service boot systemd

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

/etc/nginx/nginx.conf:86 中的未知指令“流”

我有nginx/1.12.0并且根据文档它包含stream模块。我已经使用以下命令安装了 nginx。

sudo add-apt-repository ppa:nginx/stable
sudo apt-get update
sudo apt-get install nginx
nginx -v
nginx version: nginx/1.12.0
Run Code Online (Sandbox Code Playgroud)

我尝试在以下位置添加流指令nginx.conf

stream {
    upstream sys {
        server 172.x.x.x:9516;
        server 172.x.x.x:9516;
    }
    server {
        listen 9516 udp;
        proxy_pass sys;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我重新启动nginx时,nginx日志中出现以下错误

unknown directive "stream" in /etc/nginx/nginx.conf:86

nginx -V output
Run Code Online (Sandbox Code Playgroud)
nginx version: nginx/1.12.0
built with OpenSSL 1.0.1f 6 Jan 2014
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector --param=ssp                                                                                          -buffer-size=4 -Wformat -Werror=format-security …
Run Code Online (Sandbox Code Playgroud)

nginx stream

20
推荐指数
3
解决办法
4万
查看次数

如何从代理位置删除服务器添加的标头?

我有一个 Nginx 代理设置,我向服务器添加了几个与安全相关的标头,以便它们返回所有代理位置。在某些位置我需要添加额外的标头(例如Content-Security-Policyto /),而在其他特定位置我需要删除在服务器级别添加的标头之一(例如X-Frame-Optionsfrom /framepage.html)。

nginx.conf

# ...

server {
  # ...

  include security-headers.conf;

  location / {
    proxy_pass http://web:5000/;
    include security-headers.conf;
    add_header Content-Security-Policy "my csp...";
  }

  location = /framepage.html {
    proxy_pass http://web:5000/framepage.html;
    # TODO: remove `X-Frame-Options` response header from this specific page
    # Tried add_header X-Frame-Options "";
    # Tried proxy_set_header X-Frame-Options "";
    # Tried proxy_hide_header X-Frame-Options;
  }

  location /api/ {
    proxy_pass http://api:5000/;
  }

  location /otherstuff/ {
    proxy_pass http://otherstuff:5000/;
  }

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

security-headers.conf

add_header …
Run Code Online (Sandbox Code Playgroud)

nginx

20
推荐指数
3
解决办法
4万
查看次数

使用 nginx 的单个端口处理 http 和 https 请求

我想知道 nginx 是否能够在同一个端口上处理 http 和 https 请求。[*]

这就是我想要做的。我正在运行处理 http 请求的 Web 服务器 (lighttpd),以及通过 https 为文档树的特定部分提供服务的 C 程序。这两个进程运行在同一台服务器上。

在防火墙级别,我只能有一个端口将流量转发到此服务器。所以我想做的是在这台服务器上设置 nginx 以便它侦听单个端口上的请求,然后:

A) 重定向所有http://myhost.com/*请求,以便它们转到 localhost:8080(lighttpd 正在侦听的位置)

B) 如果用户请求以 https://myhost.com/app 开头的 URL,它会将该请求发送到 localhost:8008(C 程序)。请注意,在这种情况下,远程浏览器和 nginx 之间的流量必须加密。

你认为这可能吗?如果是,怎么做?

我知道如何使用两个不同的端口来做到这一点。我面临的挑战是仅使用一个端口来完成此操作(不幸的是,我无法控制此特定环境中的防火墙配置,因此这是我无法避免的限制)。使用诸如通过 ssh 进行反向端口转发来绕过防火墙的技术也不起作用,因为这应该适用于只有 Web 浏览器和 Internet 链接的远程用户。

如果这超出了 nginx 的能力,您知道还有其他产品可以满足此要求吗?(到目前为止,我在使用 lighttpd 和 pound 进行设置时没有成功)。我也更喜欢避免使用 Apache(尽管如果这是唯一可能的选择,我愿意使用它)。

提前致谢,亚历克斯

[*] 为了清楚起见,我说的是通过同一端口处理加密未加密的 HTTP 连接。加密是通过 SSL 还是 TLS 完成都没有关系。

http nginx https lighttpd

19
推荐指数
4
解决办法
3万
查看次数

nginx 代理在后端重新启动时重试

Nginx 在后端重新启动时返回 502。如何让 Nginx 代理重试 N 次延迟 M 秒?有没有插件或其他东西?

nginx proxy

19
推荐指数
2
解决办法
7629
查看次数

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

nginx:如何防止完全命名的 SSL 服务器块充当所有 SSL 的包罗万象

我有一个带有许多虚拟服务器的 Web 服务器。其中只有 1 个是 SSL。问题是,因为没有包罗万象的服务器块侦听 SSL,对其他站点的任何 https 请求都由 1 SSL 块提供服务。

我的配置基本上是这样的:

# the catch all
server {
  listen 80 default;

  # I could add this, but since I have no default cert, I cannot enable SSL,
  # and this listen ends up doing nothing (apparently).
  # listen 443; 

  server_name _;
  # ...
}

# some server
server {
  listen 80;
  server_name server1.com;
  # ...
}

# some other server ...
server {
  listen 80;
  server_name server2.com;
  # ... …
Run Code Online (Sandbox Code Playgroud)

ssl nginx

19
推荐指数
2
解决办法
7613
查看次数

标签 统计

nginx ×10

proxy ×2

apache-2.2 ×1

boot ×1

centos ×1

http ×1

https ×1

lighttpd ×1

service ×1

ssl ×1

stream ×1

systemd ×1

ubuntu ×1

web-server ×1