我试图将 nginx 设置为与我的一个 rails 应用程序一起运行,当查看 的输出时ps -e | grep nginx,我意识到 nginx 工作进程与用户 nobody 一起运行。
它们没有作为 www-data 运行的原因是什么?
是否可以指定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/在我的情况下)的路径,而不是应用程序的目录。
我试图限制从 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页面的所有访问。
为什么低地址位毫无意义,我应该如何表述语句以使其按预期工作?
我试图用谷歌搜索低地址位是没有意义的,但我最终只得到了我认为是俄语的帖子,而且我不知道如何从俄语翻译。
在 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/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 代理设置,我向服务器添加了几个与安全相关的标头,以便它们返回所有代理位置。在某些位置我需要添加额外的标头(例如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.confadd_header …Run Code Online (Sandbox Code Playgroud) 我想知道 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 完成都没有关系。
Nginx 在后端重新启动时返回 502。如何让 Nginx 代理重试 N 次延迟 M 秒?有没有插件或其他东西?
我有一个带有许多虚拟服务器的 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)