我有一个 nginx 服务器,为近六个不同的网站提供服务。它运行在刚刚获得 IPv6 本机支持(达拉斯数据中心)的 Linode 上,我正在尝试将我的大部分站点配置为双栈操作。我使用 IPv6-only 子域启动并运行了第一个,如下所示:
server {
listen [::]:80 ipv6only=on;
listen 80;
server_name example.com ipv6.example.com;
root /var/www/example.com/htdocs;
#More stuff, including PHP, WordPress
}
Run Code Online (Sandbox Code Playgroud)
这很有效——example.com 仅支持 IPv4(目前),而 ipv6.example.com 仅支持 IPv6(主要用于测试目的)。我可以ping6 ipv6.example.com,甚至wget ipv6.example.com没有流汗 - 这一切都令人愉快地无痛(在通过 nginx 绑定虚拟主机的方式找到“问题”之后,需要ipv6only=on参数和双重listen指令)。
但是,我现在正在尝试扩展它以支持我的其他域,从 static.example.com 开始;但是,当我采用与上述相同的方法时(双重listen指令,包括ipv6only=on参数),在重新启动 nginx 时出现以下错误:
* Starting Nginx Server...
nginx: [emerg] a duplicate listen options for [::]:80 in /etc/nginx/sites-enabled/example.com.conf:3
Run Code Online (Sandbox Code Playgroud)
似乎 nginx 绑定 IPv6 的方法不允许基于名称的虚拟主机?我是否必须从我的主机获取额外的 IPv6 地址(不是问题)并在 IPv6 上使用基于 IP …
在 NGINX 中启用正确的字符集标头的正确方法是什么?
我正在使用 Google Page Speed 分析我的网站。它说我应该在 HTTP 标头中指定 HTML 文件的字符集。这样做的正确方法是什么?
我已经尝试charset utf-8;在server {}我的 NGINX 配置文件的声明中进行设置,但没有任何效果。
我的服务器响应以下标头:
Connection: keep-alive
Date: Fri, 16 Sep 2011 12:43:24 GMT
Last-Modified: Fri, 02 Sep 2011 15:13:17 GMT
Server: nginx/0.7.67
Run Code Online (Sandbox Code Playgroud)
谢谢你。
我们已经在 Nginx 和乘客上部署了我们的 rails 应用程序。间歇性地,应用程序页面被部分加载。应用日志没有错误,但是Nginx错误日志显示如下:
2011/02/14 05:49:34 [crit] 25389#0: *645 open() "/opt/nginx/proxy_temp/2/02/0000000022"
failed (13: Permission denied) while reading upstream, client: x.x.x.x,
server: y.y.y.y, request: "GET /signup/procedures?count=0 HTTP/1.1",
upstream: "passenger:unix:/passenger_helper_server:", host: "y.y.y.y",
referrer: "http://y.y.y.y/signup/procedures"
Run Code Online (Sandbox Code Playgroud) 这是我的第一个 Web 应用程序部署,并且遇到了各种问题。
我目前正在为 Django 应用程序寻找 nginx + gunicorn 实现,但这个问题主要与 nginx 配置有关。对于某些情况 - nginx 将接收到 gunicorn 本地服务器的连接和代理。
在 nginx 配置中,它说server_name我必须提供一个吗?我不打算使用任何类型的域名,只是通过我网络的外部 ip(它是静态的)和要监听的端口号。
我的愿望是当我访问类似的东西时,http://xxx.xxx.xxx.xxx:9050我将能够获得该网站。
以下是我将基于配置的示例代码以供参考。
server {
listen 80;
server_name WHAT TO PUT HERE?;
root /path/to/test/hello;
location /media/ {
# if asset versioning is used
if ($query_string) {
expires max;
}
}
location /admin/media/ {
# this changes depending on your python version
root /path/to/test/lib/python2.6/site-packages/django/contrib;
}
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP …Run Code Online (Sandbox Code Playgroud) 我使用 nginx 和 gunicorn 在两台服务器上托管我的网站,
两台服务器具有相同版本的软件包并且网站已成功托管,
但是在我的其中一台服务器中,gunicorn 总是超时并且出现错误
[CRITICAL]Worker Timeout
Booting worker with pid
Worker cannot boot with pid
Run Code Online (Sandbox Code Playgroud)
在此之后,我在网页中收到 502 Badgateway 错误。我必须重新启动 gunicorn 进程才能打开网站。
以下是错误日志:
2014-02-16 14:29:53 [1267] [CRITICAL] WORKER TIMEOUT (pid:4994)
2014-02-16 14:29:53 [1267] [CRITICAL] WORKER TIMEOUT (pid:4994)
2014-02-16 14:29:53 [22140] [INFO] Booting worker with pid: 22140
Run Code Online (Sandbox Code Playgroud)
我得到这样的连续错误,
2014-02-16 14:29:53 [22140] [DEBUG] Ignoring EPIPE
Ignoring EPIPE
2014-02-16 14:29:53 [22140] [DEBUG] Ignoring EPIPE
Ignoring EPIPE
2014-02-16 14:29:57 [22140] [DEBUG] Ignoring EPIPE
Ignoring EPIPE
Run Code Online (Sandbox Code Playgroud)
工人又开始工作,
2014-02-16 14:32:44 [1267] [CRITICAL] WORKER …Run Code Online (Sandbox Code Playgroud) 如果我已经有一堆虚拟主机,我如何创建一个虚拟主机来处理与任何虚拟主机都不匹配的请求?(即通过 IP 访问,另一个域链接到 IP,.etc .etc)
我在 AWS 上的 EC2 机器上部署了一个 API。传入的 HTTPS 请求被传递到弹性负载均衡器。负载均衡器处理 SSL,并将请求传递给 Nginx 服务器,该服务器根据请求 URL 将请求代理到特定服务器。
Nginx 机器需要大量维护工作,尤其是服务器 IP 地址更改时。此外,基于 URL 的代理路由看起来确实是负载均衡器的自然延续。拥有一个健全的基于 Web 或基于 API 的界面来控制 URL 路由将是一个巨大的福音。
是否有任何基于云的路由解决方案可以通过 URL 模式代理 HTTP 请求,替代我的 Nginx 机器?
我目前通过 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 但它像这样失败了。
$ sudo service nginx stop
Stopping nginx: [FAILED]
Run Code Online (Sandbox Code Playgroud)
而nginx.conf定义的地方nginx.pid有一条线。
# /etc/nginx/nginx.conf
pid /var/run/nginx.pid;
Run Code Online (Sandbox Code Playgroud)
但是nginx.pid目录中没有/var/run/。
locate nginx.pid 显示此输出。
/var/run/nginx.pid
/var/run/nginx.pid.oldbin
Run Code Online (Sandbox Code Playgroud)
但是搜索后updatedb没有匹配项。我在CentOS release 6.5 (Final).
我应该怎么做才能停止 nginx 守护进程?
这是 的输出ps -ef | grep nginx,似乎 nginx 守护进程仍在运行。
ironsand 17065 16933 0 15:55 pts/0 00:00:00 grep --color nginx
root 19506 1 0 2013 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
ironsand 19507 19506 0 2013 ? …Run Code Online (Sandbox Code Playgroud)