NginX GeoIP模块配置-Conf第一行不允许load_module

时间:2018-07-09 10:23:19

标签: nginx geoip nginx-config

我的nginx conf看起来像这样:

include /usr/share/nginx/modules/mod-http-geoip.conf;

server {

}

server {

}

我已经通过sudo yum安装了mod-http-geoip,安装了nginx-mod-http-geoip

我有这些:

/usr/share/nginx/modules/mod-http-geoip.conf:

load_module "/usr/lib64/nginx/modules/ngx_http_geoip_module.so";

/usr/lib64/nginx/modules/ngx_http_geoip_module.so

我得到的错误:

2018/07/09 09:37:14 [emerg] 9552#0:在/usr/share/nginx/modules/mod-http-geoip.conf:1

这是我的nginx -V:

[root@ip-172-31-45-46 modules]# nginx -V
nginx version: nginx/1.12.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-http_auth_request_module --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-google_perftools_module --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --with-ld-opt=' -Wl,-E'

请注意,上面有“ --with-http_geoip_module = dynamic”参数

有人可以指出我想念的东西吗?

我遵循了彼得·琼斯(Peter Jones)在这篇文章上的回答:How to enable dynamic module with an existing NGINX installation

我也尝试过: -将load_module放入“ /usr/lib64/nginx/modules/ngx_http_geoip_module.so”;  在我的.conf文件的第一行中。 -将load_module放入“ /usr/lib64/nginx/modules/ngx_http_geoip_module.so”;  在服务器{}

内部

所有人都给我同样的错误,这里不允许使用“ load_module”指令

我是否需要运行./configure命令,make或其他内容?

2 个答案:

答案 0 :(得分:1)

根据到目前为止的所有信息,您已经从EPEL存储库安装了nginx。虽然这没什么问题,但我建议从nginx自己的YUM存储库安装它,因为它是:

  • 来自软件开发人员
  • 最近(如我现在所见,nginx自己的回购版本为1.14.0,而epel的版本为1.12.2)

因此请确保您install nginx properly

每个Nginx发行版都倾向于使用自己的结构文件约定。但是,nginx的配置规则在所有方面都是相同的。所以:

include /usr/share/nginx/modules/mod-http-geoip.conf;
server {

}
server {

}

...真的不可能,因为server块应该放在http部分中。

load_module应该放在/etc/nginx/nginx.conf中的顶层(文件开头)。

如果您不能离开/想要坚持使用EPEL的nginx发行版

EPEL nginx软件包约定包括来自每个模块的load_module文件的.conf指令:

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

安装模块后,它将使用load_module删除.conf文件以进行加载。

确保include位于nginx配置的顶部,而不位于任何部分。

答案 1 :(得分:0)

/usr/share/nginx/modules实际上只是与/usr/lib64/nginx/modules的符号链接,Nginx希望在其中找到实际的模块,而不是config指令。

在上方查看您的配置,我希望动态模块的配置文件路径为/etc/nginx/modules-enabled,或者您可以将它们包含在events块上方的nginx.conf的最顶部。 / p>