我想删除文件error.log(nginx错误日志文件)的内容,但我不想实际删除该文件。
这可能吗?
运行 ubuntu
虽然我能够成功配置 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 的配置语言本身可以说是一种编程语言。它有变数!
调用有区别吗
systemctl reload nginx
Run Code Online (Sandbox Code Playgroud)
并打电话
nginx -s reload
Run Code Online (Sandbox Code Playgroud)
?
我知道,除了 systemd,还有其他初始化系统,如 SysV 和 Upstart。所以也许这个问题也适用于他们。
是通过 init 系统发出这个命令还是我可以只调用 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) 我在 Web 浏览器中错误输入网页的 URL 时偶然发现了这一点。
为什么访问http://example.com/%会导致抛出 HTTP 400 Bad Request 错误?服务器是否在百分号之后或之前期待其他内容?
这似乎发生在 Apache 和 Nginx 服务器上。
(服务器:cloudflare-nginx)https://superuser.com/%

(服务器:Apache)http://mozilla.org/%

假设用户尝试使用以下网址访问我网站上的给定图像:
http://www.mywebsite.com/blog/image1.jpg?someParam=100
我需要一个重写规则,从路径中删除“博客”节点:
http://www.mywebsite.com/image1.jpg?someParam=100
我有一个用于网络的个人服务器。我有时需要 SSH/SFTP 到它。
免责声明:我对nginx内部结构的经验很少。
今天早上,我发现一家知名咖啡馆连锁店的免费 wifi 阻止了 SSH(实际上,他们阻止了任何不在 80/443 上的东西)。但是当我需要 SSH 时,我需要它,所以我寻找在同一端口上共享 SSH 和 HTTPS 的方法。
我查看了一些可以在端口 443 上运行的可能解决方案:
SSHL:SSH/OpenVPN/HTTPS 多路复用器;OpenVPN:VPN 解决方案具有用于 OpenVPN 和 HTTPS 的内置多路复用器;HAProxy:网络服务器/负载平衡器也可以多路复用所有内容。所有这些看起来都很简单,但我真的不喜欢添加层和复杂性的事实,并且可能会在不太可能的情况下放慢速度,因为我需要在 443 上使用 SSH。
我知道它nginx已经支持原始 TCP 流处理。所以我想知道我是否可以直接在nginx. 这个想法是,如果模块识别 HTTP(S) 或其他所有内容,则nginx可以选择使用该http模块stream。
在这种情况下,我有两个问题:
nginx即使能够做这样的区别?(我什至不确定我是否能够同时http在stream块和块中侦听端口 443。)我正在尝试在 nginx 中设置安全连接 (https)。
但是我有点担心私钥的权限,这在任何教程中都没有提到。
我应该改变它们吗?要什么?
这是我之前关于如何使 nginx 反向代理 302 重定向到 URI 子文件夹而不是 root 的问题的后续。
我有一个使用Nginx上的代理服务器rewrite和proxy_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 配置很陌生。我在一个非常基本的问题上遇到了一些困难。我想在/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)
有没有人知道我如何处理这些静态内容?