标签: nginx

如何擦除 error.log 文件的内容但保持文件完整

我想删除文件error.log(nginx错误日志文件)的内容,但我不想实际删除该文件。

这可能吗?

运行 ubuntu

logging nginx ubuntu

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

Nginx 作为 HTTPS 的转发代理

虽然我能够成功配置 nginx 来代理 HTTP 流量(使用本指南),但所有代理 HTTPS 请求的尝试都会导致代码 400(错误请求)。

Nginx 调试日志根本没有帮助:

2013/06/05 14:38:33 [info] 74946#0: *589
    client sent invalid request while reading client request line, client: 127.0.0.1,
    server: google.com, request: "CONNECT google.com:443 HTTP/1.1"
Run Code Online (Sandbox Code Playgroud)

这些CONNECT要求是什么?甚至可以proxy_pass在 nginx 中进行HTTPS 请求吗?

更新

需要补充一点,代理服务器是我的 Web 开发工作流程/工具包的一部分。这是在生产环境中测试/调试客户端 JavaScript 的好方法(在代理之前使用重写)。

此外,nginx 的配置语言本身可以说是一种编程语言。它有变数!

proxy https nginx

28
推荐指数
3
解决办法
6万
查看次数

如何重新加载 nginx - systemctl 或 nginx -s?

调用有区别吗

systemctl reload nginx
Run Code Online (Sandbox Code Playgroud)

并打电话

nginx -s reload
Run Code Online (Sandbox Code Playgroud)

?

我知道,除了 systemd,还有其他初始化系统,如 SysV 和 Upstart。所以也许这个问题也适用于他们。

是通过 init 系统发出这个命令还是我可以只调用 nginx 本身?

提前致谢

linux nginx systemd

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

如何在 OS X 登录时在端口 80 上启动 nginx?

我使用自制软件安装了 Nginx ,完成安装后显示以下消息:

In the interest of allowing you to run `nginx` without `sudo`, the default
port is set to localhost:8080.

If you want to host pages on your local machine to the public, you should
change that to localhost:80, and run `sudo nginx`. You'll need to turn off
any other web servers running port 80, of course.

You can start nginx automatically on login running as your user with:
  mkdir -p ~/Library/LaunchAgents
  cp #{prefix}/org.nginx.nginx.plist ~/Library/LaunchAgents/
  launchctl load …
Run Code Online (Sandbox Code Playgroud)

boot osx-snow-leopard permissions nginx launchctl

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

为什么 URL 中的百分号会导致 HTTP 400 Bad Request 错误?

我在 Web 浏览器中错误输入网页的 URL 时偶然发现了这一点。

为什么访问http://example.com/%会导致抛出 HTTP 400 Bad Request 错误?服务器是否在百分号之后或之前期待其他内容?

这似乎发生在 Apache 和 Nginx 服务器上。

apache-http-server http webserver nginx

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

Nginx 重写规则以删除路径节点

假设用户尝试使用以下网址访问我网站上的给定图像: http://www.mywebsite.com/blog/image1.jpg?someParam=100

我需要一个重写规则,从路径中删除“博客”节点:

http://www.mywebsite.com/image1.jpg?someParam=100

url-rewriting nginx

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

nginx 可以在同一个端口上同时提供 SSH 和 HTTP(S) 服务吗?

语境

我有一个用于网络的个人服务器。我有时需要 SSH/SFTP 到它。

免责声明:我对nginx内部结构的经验很少。

问题

今天早上,我发现一家知名咖啡馆连锁店的免费 wifi 阻止了 SSH(实际上,他们阻止了任何不在 80/443 上的东西)。但是当我需要 SSH 时,我需要它,所以我寻找在同一端口上共享 SSH 和 HTTPS 的方法。

我看的

我查看了一些可以在端口 443 上运行的可能解决方案:

  • SSHL:SSH/OpenVPN/HTTPS 多路复用器;
  • OpenVPN:VPN 解决方案具有用于 OpenVPN 和 HTTPS 的内置多路复用器;
  • HAProxy:网络服务器/负载平衡器也可以多路复用所有内容。

所有这些看起来都很简单,我真的不喜欢添加层和复杂性的事实,并且可能会在不太可能的情况下放慢速度,因为我需要在 443 上使用 SSH。

将 nginx 放入混合中

我知道它nginx已经支持原始 TCP 流处理。所以我想知道我是否可以直接在nginx. 这个想法是,如果模块识别 HTTP(S) 或其他所有内容,则nginx可以选择使用该http模块stream

问题

在这种情况下,我有两个问题:

  • nginx即使能够做这样的区别?(我什至不确定我是否能够同时httpstream块和块中侦听端口 443。)
  • 如果是这样,该设置是否会存在明显的性能问题?(例如,我正在考虑使用 SFTP 的传输速度,而不是真正的 SSH 本身。)

multiplexing nginx

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

SSL 密钥的权限?

我正在尝试在 nginx 中设置安全连接 (https)。

但是我有点担心私钥的权限,这在任何教程中都没有提到。

我应该改变它们吗?要什么?

linux ssl nginx openssl ssl-certificate

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

如何让 nginx 重写 HTTP 正文内容中的 URI?

这是我之前关于如何使 nginx 反向代理 302 重定向到 URI 子文件夹而不是 root 的问题的后续。

我有一个使用Nginx上的代理服务器rewriteproxy_pass指令来代理外部请求的URL就像https://domain.com/my/web/app/在一个局域网内部的服务器https://10.0.0.22/。这是我用 ASCII UML 表示翻译的尝试:

                                    .-------------.       .------------------.
                                    | Nginx proxy  |      | Local web server |
                                    | (domain.com) |      | (10.0.0.22)      |
                                    '-------------'       '------------------'
                                               |                 |
                                               |                 |
GET https://domain.com/my/web/app/ ----------->|                 |
                                               |---------------->| GET /
                                               |                 |
                                               |<----------------| 302 redirect /login.php
302 redirect /my/web/app/login.php <-----------|                 |
                                               |                 |
GET https://domain.com/my/web/app/login.php -->|                 |
                                               |---------------->| GET /login.php
                                               |                 |
                                               |<----------------| 200
HTML body content …
Run Code Online (Sandbox Code Playgroud)

nginx reverse-proxy

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

Nginx:从给定目录中提供静态文件 - 一级太深

我对 nginx 配置很陌生。我在一个非常基本的问题上遇到了一些困难。我想在/doc(index.html、一些图像等)上托管一些静态文件。这些文件位于名为 /sites/mysite/proj/doc/ 的目录中。

问题是,使用下面的 nginx 配置,nginx 会尝试查找名为“/sites/mysite/proj/doc/doc”的目录。也许这可以通过将根设置为 /sites/mysite/proj/ 来解决,但我不想潜在地暴露 proj/ 目录中的其他(非静态)资产。由于各种原因,我无法真正将 doc/ 目录从它所在的位置移开。

我认为有一种方法可以使用 Rewrite 规则来解决这种情况,但我并不是真正了解所有部分,因此制定规则有些困难。

rewrite ^/doc/(.*)$ /$1 permanent;
Run Code Online (Sandbox Code Playgroud)

我还包含了一个从 /sites/mysite/htdocs/static/ 目录托管文件的工作示例。

> vim locations.conf

location /static {
    root   /sites/mysite/htdocs/;
    access_log   off;
    autoindex  on;
}

location /doc {
    root   /sites/mysite/proj/doc/;
    access_log   on;
    autoindex  on;
}


2011/11/19 23:49:00 [error] 2314#0: *42 open() "/sites/mysite/proj/doc/doc" failed (2: No such file or directory), client: 100.100.100.100, server: , request: "GET /doc HTTP/1.1", host: "myhost.com"
Run Code Online (Sandbox Code Playgroud)

有没有人知道我如何处理这些静态内容?

rewrite webserver nginx

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