我目前通过 Nginx 站点上的说明安装了 Nginx:
nginx=stable
sudo su -
add-apt-repository ppa:nginx/$nginx
apt-get update
apt-get install
Run Code Online (Sandbox Code Playgroud)
我已经配置了 Nginx,它已经运行了一段时间。现在,我想添加一些自定义模块——比如说,上传进度模块。此模块的说明说要添加--add-module=path/to/nginx_uploadprogress_module到您的./configure命令中。但是,我没有从源代码安装 Nginx。
处理这种情况的最佳方法是什么?是否可以告诉 APT 从源代码编译并将选项传递给./configure?我可以在现有安装上编译吗?路径怎么样——我如何让它们匹配?还是我必须删除 APT 托管版本并重新开始?
此类问题可能已在此处提出,但我找不到与我的问题真正相符的问题。听说nginx性能相当可观,但是Apache有更多文档,社区(阅读:专家)寻求帮助
现在我想知道的是,两个 Web 服务器在性能、配置的简单性、定制级别等方面的比较如何。在 vps 环境中作为反向代理服务器??
我仍在权衡两者之间的 ruby web 应用程序(不是 ROR)与瘦(ruby web 服务器之一)一起使用。
具体答案将不胜感激。不触及红宝石部分的一般答案是可以的。我仍然是 Web 服务器管理方面的菜鸟。
Ubuntu 服务器 10.04.1 x86
我有一台在 nginx 后面带有 FCGI HTTP 服务的机器,它为许多不同的客户端提供许多小的 HTTP 请求。(高峰时段每秒大约 230 个请求,平均响应大小为 650 字节,每天有数百万个不同的客户端。)
结果,我有很多套接字,挂在 TIME_WAIT 中(使用下面的 TCP 设置捕获图表):

我想减少套接字的数量。
除了这个我还能做什么?
$ cat /proc/sys/net/ipv4/tcp_fin_timeout 1 $ cat /proc/sys/net/ipv4/tcp_tw_recycle 1 $ cat /proc/sys/net/ipv4/tcp_tw_reuse 1
更新:有关机器上实际服务布局的一些详细信息:
客户端-----TCP-socket--> nginx(负载均衡器反向代理)
-----TCP-socket--> nginx (worker)
--domain-socket--> fcgi-software
--single-persistent-TCP-socket--> Redis
--single-persistent-TCP-socket--> MySQL (其他机器)
我可能应该切换负载平衡器 --> 工作线程连接到域套接字,但关于 TIME_WAIT 套接字的问题仍然存在——我计划很快在单独的机器上添加第二个工作线程。在这种情况下将无法使用域套接字。
我在配置文件中有以下内容
server {
listen 80;
server_name _;
access_log /var/log/nginx/access.log main;
...
server {
listen 80;
server_name example.com
access_log off;
error_log off;
Run Code Online (Sandbox Code Playgroud)
但它仍然保持记录example.com虚拟主机。我究竟做错了什么?
是否可以在 nginx 中为每个虚拟主机配置不同的用户?
就像是
server {
user myprojectuser myprojectgroup;
...
}
Run Code Online (Sandbox Code Playgroud) 我有具有以下设置的 nginx:
server {
listen 80;
server_name site.com www.site.com;
root /home/site/public_html;
listen 443;
#server_name site.com www.site.com;
#root /home/site/public_html;
ssl_certificate /root/site.pem;
ssl_certificate_key /root/site.key;
Run Code Online (Sandbox Code Playgroud)
但是,当我查看 SSL 连接时,我得到:
An error occurred during a connection to grewpler.com.
SSL received a record that exceeded the maximum permissible length.
(Error code: ssl_error_rx_record_too_long)
Run Code Online (Sandbox Code Playgroud)
我TrustWave Premium SSL用作 SSL 证书颁发机构。
我目前正在接收一个相当大的 HTTP 洪水,它导致我的 nginx 反向代理产生一个 502 错误网关。
我有一个前端服务器运行 nginx 作为后端服务器的代理,但它只是收到一堆connect() failed (110: Connection timed out) while connecting to upstream错误。成吨的。如果我绕过代理服务器连接到后端,我可以很好地运行该站点,所以我知道它在某个地方的反向代理中。但是,我不知道如何确定它超时的原因。
有什么帮助吗?
在 CentOS 6.2 上运行 nginx 1.2.3
我有一个带有许多启用的服务器块的 Nginx。每个服务器响应 1 个规范域,并且可以将 1 个或多个转发到该规范 URL。我至少有一台服务器(还没有检查所有服务器),如果我输入一个指向这个框的不存在的域,Nginx 会显示一个它选择的站点(总是同一个站点,但不是一个我在后面)。
我已经浏览了我总是登陆的站点的配置文件,但没有看到任何明显的东西可以将其识别为任何类型的默认站点,但它就在那里,当我胖手指一个 URL 时总是显示出来。
关于我应该寻找什么来追踪这个问题的任何想法?
我在 nginx 配置中有两个位置可以工作:
location ^~ /media/ {
proxy_pass http://backend.example.com;
}
location ^~ /static/ {
proxy_pass http://backend.example.com;
}
Run Code Online (Sandbox Code Playgroud)
如何将这两者合并到一个位置?
我试过这个建议
location ~ ^/(static|media)/ {
proxy_pass http://backend.example.com;
}
Run Code Online (Sandbox Code Playgroud)
但这对我不起作用。
此外,当我不使用后端时,以下配置运行正常:
location ~ ^/(static|media)/ {
root /home/project_root;
}
Run Code Online (Sandbox Code Playgroud)
更新(日志中的一些字符串)
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /content/11160/ HTTP/1.1" 200 5310 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 OPR/18.0.1284.68"
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/font-awesome/css/font-awesome.min.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, …Run Code Online (Sandbox Code Playgroud) 我已经从 MacPorts 在我的 Mac 上安装并配置了 nginx 服务器
sudo port install nginxnginx.conf.example到nginx.conf并改名mime.types.example来mime.types。它工作正常,但我无法阻止它。
我试过了sudo nginx -s stop,但这并没有停止服务器,我仍然可以看到“欢迎使用 nginx!” 页面在我的浏览器上http://localhost/;此外,我仍然看到 nginx 的主进程和工作进程ps -e | grep nginx。
在 Mac 上启动/停止 nginx 的最佳方法是什么?
顺便说一句,我添加了“守护进程关闭”;进入 nginx.conf - 根据各种资源的推荐。