![我应该如何向 nginx 添加 GeoIP 模块?](https://linux22.com/image/671883/%E6%88%91%E5%BA%94%E8%AF%A5%E5%A6%82%E4%BD%95%E5%90%91%20nginx%20%E6%B7%BB%E5%8A%A0%20GeoIP%20%E6%A8%A1%E5%9D%97%EF%BC%9F.png)
我在 centos 6.7 服务器上使用 nginx 版本 1.8,但使用 nginx -V 命令时,我看不到 geoip_module。我该如何将其添加到 nginx?
答案1
Nginx 在 apache 意义上没有“模块”,它必须在 ./configure 期间使用您需要包含的模块进行重新编译。
事实上这非常简单 - 只需按照以下步骤操作即可:
使用以下命令安装构建 nginx 的先决条件:
yum group install "Development Tools"
yum install gcc gd-devel GeoIP-devel
从以下网址下载最新的 nginx 源代码http://nginx.org/en/download.html
wget http://nginx.org/download/nginx-1.15.7.tar.gz
解压并进入源码树目录
tar xzfv nginx-1.15.7.tar.gz && cd nginx-1.15.7
获取已安装的 nginx 的配置参数(通过运行
nginx -V
),--with-http_geoip_module
向其中添加选项或仅使用以下命令进行配置:./configure --with-http_gzip_static_module --with-pcre --with-file-aio --without-http_scgi_module --without-http_uwsgi_module --without-http_fastcgi_module --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_image_filter_module --with-cc-opt="-march=native -mtune=native -O2 -pipe" --with-sha1-asm --with-zlib-asm=pentiumpro --with-md5-asm --with-pcre-jit --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-http_geoip_module
make && make install
现在,您的 nginx 中已支持 GeoIP。要使用它,请从以下位置下载并解压数据库http://dev.maxmind.com/geoip/legacy/geolite/
curl http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz | gzip -d - > /etc/nginx/GeoIP.dat
curl http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz | gzip -d - > /etc/nginx/GeoLiteCity.dat
将它们添加到http您的部分nginx 配置文件:
geoip_country /etc/nginx/GeoIP.dat;
geoip_city /etc/nginx/GeoLiteCity.dat;
最后定义标头,其中包含 GeoIP 信息服务器您的部分nginx 配置文件电子邮件:
proxy_set_header GEOIP_REGION $geoip_region;
proxy_set_header GEOIP_REGION_NAME $geoip_region_name;
proxy_set_header GEOIP_CITY $geoip_city;
proxy_set_header GEOIP_AREA_CODE $geoip_area_code;
proxy_set_header GEOIP_LATITUDE $geoip_latitude;
proxy_set_header GEOIP_LONGITUDE $geoip_longitude;
proxy_set_header GEOIP_POSTAL_CODE $geoip_postal_code;
答案2
- 创建一个新文件,/etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
如果你的系统版本是 centos 7.x ,你需要在 'baseurl' 中更改它
- 然后 ,
yum install nginx-module-geoip
你说对了