我已经重新配置了nginx,但我无法使用以下配置来重新启动它:
会议:
server {
listen 80;
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location /robots.txt {
alias /path/to/robots.txt;
access_log off;
log_not_found off;
}
location = /favicon.ico { access_log off; log_not_found off; }
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_read_timeout 30;
proxy_pass http://127.0.0.1:8000;
}
location /static {
expires 1M;
alias /path/to/staticfiles;
}
}
在运行sudo nginx -c conf -t
测试配置后,返回以下错误,我无法确定问题的真正原因
nginx: [emerg] "server" directive is not allowed here in /etc/nginx/sites-available/config:1
nginx: configuration file /etc/nginx/sites-available/config test failed
5条答案
按热度按时间new9mtju1#
这不是
nginx
配置文件。它是nginx
配置文件的 * 部分 *。nginx
配置文件(通常称为nginx.conf
)如下所示:server
块包含在http
块中。通常,通过使用
include
指令引入其他片段(例如,从sites-enabled
目录),将配置分布到多个文件中。使用
sudo nginx -t
测试完整的配置文件,该文件从nginx.conf
开始,并使用include
指令引入其他片段。有关详细信息,请参阅本文档。prdp8dxp2#
反向代理的有效nginx.conf示例;这里
10.x.x.x
是运行nginx代理服务器的服务器,并且是通过浏览器连接到的服务器,而10.y.y.y
是运行真实的的web服务器的服务器下面是一个片段,如果你想进行SSL传递。也就是说,如果
10.y.y.y
正在运行一个HTTPS web服务器。这里10.x.x.x
,或者说nignx正在运行的地方监听端口443,所有到443的流量都被定向到你的目标web服务器你也可以把它放在码头上
pgvzfuti3#
nginx.conf
文件的路径是Nginx的主要配置文件,也是应包括其他Nginx配置文件路径的文件,当需要时为/etc/nginx/nginx.conf
。您可以通过在终端键入以下内容来访问和编辑此文件
cd /etc/nginx
/etc/nginx$ sudo nano nginx.conf
此外,在此文件中,您可以包括其他文件-这些文件可以将SERVER指令作为独立的SERVER BLOCK -这些文件不需要位于HTTP或HTTPS块中,正如上面已接受的答案中所阐明的。
我重复-如果你需要在主配置文件本身中定义一个服务器块,那么这个服务器块必须在
/etc/nginx/nginx.conf
文件中的一个封闭HTTP或HTTPS块中定义,/etc/nginx/nginx.conf
文件是Nginx的主配置文件。另请注意-如果您在路径为
/etc/nginx/conf.d
的文件中直接定义SERVER BLOCK,而不是将其包含在HTTP或HTTPS块中,则可以。此外,要使此工作正常进行,您需要在PRIMARY Config文件中包含此文件的路径,如下所示:-除此之外,您还可以注解掉PRIMARY Config文件中的行
并且不需要在
/etc/nginx/sites-available/
中保留任何配置文件,也不需要将它们符号链接到/etc/nginx/sites-enabled/
,请注意这对我来说是有效的-如果有人认为这不适合他们或者这种配置是非法的等等,请留下评论,以便我可以更正自己-谢谢。编辑:-根据最新版本的Nginx官方食谱,我们不需要在-
/etc/nginx/sites-enabled/
中创建任何配置,这是旧的做法,现在已经过时了。因此,不需要包含指令
include /etc/nginx/sites-available/some_file.conf;
。引自Nginx CookBook第5页。
“在某些程序包资料档案库中,此文件夹名为sites-enabled,而配置文件是从名为site-available的文件夹链接的;该约定已失效。”
g0czyy6m4#
可能只是在config导入的文件中的某个地方出现了一个错字。例如,我在config文件的深处出现了一个错字:
(location而不是location),这会导致错误:
euoag5mw5#
/etc/nginx/conf.d/.conf文件中的所有文件都被删除。/etc/nginx/conf.d/包含可选的/cpanel代理供应商/.conf;或/etc/nginx/conf.d/包含可选的/站点可用的/*.conf;**