Nginx:liunx安装nginx并安装realip模块

Posted 无敌的黑星星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx:liunx安装nginx并安装realip模块相关的知识,希望对你有一定的参考价值。

网站部署了流量代理服务(例如Web应用防火墙、DDoS高防、CDN)后,

源站服务器可以通过解析回源请求中的X-Forwarded-For记录,获取客户端的真实IP。

1,查看原来nginx的安装模块

./nginx -V

没有安装

2,重新编译原来的nginx

cd /tmp/nginx-1.18.0

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_realip_module

make
make install

./nginx -V


安装成功

3,添加nginx的realip配置
在nginx.conf的http模块添加下面的代码。全局添加

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

以及 nginx的日志格式在log_format中添加http_x_forwarded_for字段,替换默认的remote_address字段、

log_format  main  '$request_time - $upstream_response_time - $upstream_addr - $remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"'; 

4,重启nginx

./nginx -s reload

5、非覆盖安装
参考链接:https://blog.csdn.net/skate6/article/details/53929541
上面是重新安装nginx,下面的是非覆盖安装

nginx添加模块(非覆盖安装)

原已经安装好的nginx,现在需要添加一个未被编译安装的模块:

查看原来编译时都带了哪些参数

/usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.8.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) 
configure arguments: --prefix=/usr/local/nginx --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre

进入nginx源码目录

#cd nginx-1.3.2

添加的参数 (添加之前已经过的编译模块,不然最后只有新编译模块)

#./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre --with-http_ssl_module

编译
#make 不要make install,否则就是覆盖安装
make完之后在objs目录下就多了个nginx,这个就是新版本的程序了

替换nginx二进制文件

#cp /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginx.bak    (备份之前的nginx二进文件)
#cp ./objs/nginx  /usr/local/nginx/sbin/ 

测试新的nginx程序是否正确

#/usr/local/nginx/sbin/nginx -t

nginx: theconfiguration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx:configuration file /usr/local/nginx/conf/nginx.conf test issuccessful

重新加载nginx

/usr/local/nginx/sbin/nginx -s reload

查看ngixn版本极其编译参数

/usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.8.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre --with-http_ssl_module

昨天在网上找的这方面的资料都显示,只需要安装现在需要的就可以,经过我多次测试,最后nginx -V 显示出来只有新的安装,之前的编译都没有显示,所以要使用新的nginx 模块一定要把之前的编译过的 再一次安装。

重点:只需要make ,不需要make instll (make install 会把你之前的配置都覆盖掉)!


安装nginx
1.安装依赖包

一键安装上面四个依赖

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

2.下载并解压安装包

//创建一个文件夹

cd /usr/local
mkdir nginx
cd nginx
//下载tar包
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -xvf nginx-1.13.7.tar.gz

3.安装nginx

//进入nginx目录
cd /usr/local/nginx
//进入目录
cd nginx-1.13.7
//执行命令 考虑到后续安装ssl证书 添加两个模块
./configure --with-http_stub_status_module --with-http_ssl_module
//执行make命令
make
//执行make install命令
make install

4.启动nginx服务

 ​​​​​​​./usr/local/nginx/sbin/nginx

4.配置nginx.conf

#打开配置文件

vi /usr/local/nginx/conf/nginx.conf

将端口号改成8089(随便挑个端口),因为可能apeache占用80端口,apeache端口尽量不要修改,我们选择修改nginx端口。

将localhost修改为你服务器的公网ip地址。

5.重启nginx

/usr/local/nginx/sbin/nginx -s reload

查看nginx进程是否启动:

ps -ef | grep nginx

6.若想使用外部主机访问nginx,需要关闭服务器防火墙或开放nginx服务端口,端口为上一步nginx.conf的配置端口:

centOS6及以前版本使用命令: systemctl stop iptables.service

centOS7关闭防火墙命令: systemctl stop firewalld.service

关闭防火墙会导致服务器有一定风险,所以建议是单独开放服务端口 :

开放80端口:

firewall-cmd --zone=public --add-port=80/tcp --permanent

查询端口号80 是否开启:

firewall-cmd --query-port=80/tcp

重启防火墙:

firewall-cmd --reload

随后访问该ip:端口 即可看到nginx界面。

7.访问服务器ip查看(备注,由于我监听的仍是80端口,所以ip后面的端口号被省略)

安装完成一般常用命令

进入安装目录中,

命令: cd /usr/local/nginx/sbin

启动,关闭,重启,命令:

./nginx 启动

./nginx -s stop 关闭

./nginx -s reload 重启

LVS+keepalived+nginx搭建高可用负载均衡集群(详细配置步骤讲解)

一.准备工作

    首先我们要准备四台虚拟机如下表所示:

主机IP
MASTER

192.168.204.130

192.168.204.208(VIP)

real_server1192.168.204.135
real_server2192.168.204.137
BACKUP192.168.204.138

1.在主机和备机上都要安装LVS和keepalived:

安装LVS:yum install ipvsadm -y

安装keepalived:需要先安装依赖库:

yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel

然后yum install keepalived -y

我们需要在主机上配置一个虚拟ip,这个我们可以直接在keepalived.conf中配置,现在不需要着急

2.在两台真实服务器上都要安装nginx:

安装nginx也需要先安装依赖库:

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

然后:yum install nginx -y

接下来我们就要查看每台服务器的防火墙以及slinux是否关闭,时间是否同步,如果不知道如何修改,具体的修改方式在前面的博客都有具体讲.

二.nginx服务器的配置

.为了更好的区分两台nginx服务器,我们需要修改一下nginx的html配置.

cd /usr/share/nginx/html

然后编辑index.html文件具体配置如下:

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<h2>This is RealServer-1 for Nginx:192.168.204.135 </h2>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

这里需要注意的是我们要将nginx的IP修改为本机IP

然后我们可以访问一下nginx的网页,结果如下图所示:

 另外一台真实服务器的nginx配置也和上面一样

注意:如果你的nginx页面并不显示刚刚新加的IP信息的话,我们就要查看对应的nginx下的default.conf文件配置的路径是否与我们现在的路径一致,如果遇到上面的问题的具体解决办法如下:首先我们要进到/etc/nginx/conf.d目录下,编辑default.conf文件,如下:

 我们要注意上面的箭头所指的文件路径要与我们刚才配置的index.html的路径保持一致,否则将无法识别!!!!!两台nginx服务器配置好了之后就可以开始后续操作了.

三.keepalived的具体配置

vim /etc/keepalived/keepalived.conf

 (第一部分如上图所示,把不需要的注销掉)

 (第二部分的箭头所指是VIP,也就是虚拟地址,随便设置一个就可以了,最好和真实IP保持同一网段)

 (第三部分的第一个IP地址为虚拟IP,端口默认为你default.conf里所配置的端口,大多为80端口,第二个IP是我们的真实主机1的IP地址,第三个IP为真实主机2的IP地址,剩下的信息按照上图配置保持一致即可,另外的多余信息注销掉)

 另外一台备机的配置跟上面差不多,需要修改的地方有第二张图的第二行state要改为BACKUP.

切记:每一次修改配置文件之后都需要重启服务才能生效!!!!!!!!!!

四.真实主机的环境配置

配置两台真实服务器上的回环地址,具体步骤如下:

cd /etc/sysconfig/network-scripts/

然后编辑回环地址:vim ifcfg-lo,具体配置如下图:

 添加上箭头所指的两行,IP为上面配置的虚拟IP,其他保持上图一致.

接下来我们需要调整内核参数,关闭arp响应,具体操作如下所示:

vim /etc/sysctl.conf

 我们需要在文件的末尾添加上如上图所示的四行内容.另外一台真实主机做相同配置即可.

五.测试

我们在网页上访问虚拟IP时不断刷新可以在两台真实主机上来回跳转即可,这个时候就凸显了我们最开始修改nginx的html文件的重要性了,不然无法分别是否发生跳转.

 

 如果跳转成功就说明本次服务搭建完成.

六.排错及排错思路

  首先我们要养成遇到问题首先查看日志的思维,如果是服务无法跳转那么我们先查看一下主机是绑定两台真实服务器:

 保证两台真实服务器都存在了之后我们再查看一下信息:

Lvs模块设置超时时间:ipvsadm --set 1 2 1

Keepalived.conf需要注释persistence_timeout 1

Nginx.conf需要改配置keepalive_timeout 1

如果上述操作均已完成之后还是无法实现页面跳转,那么我们就要再次查看报错日志,

真实服务器查看报错日志方式:tail -f /var/log/nginx/error.log

主备查看日志: vim /var/log/message  shift+g跳转到最后一行,查看具体报错信息.

本次分享就这些,希望对大家的学习有所帮助!!!

以上是关于Nginx:liunx安装nginx并安装realip模块的主要内容,如果未能解决你的问题,请参考以下文章

删除 Nginx 并使用 Pagespeed 模块安装 Nginx

Nginx——centos7通过yum方式快速安装Nginx并测试是否安装成功(图解版)

centos安装nginx并配置SSL证书

Linux源码安装nginx并配置

【FFMPEG】NI Real time linux上安装ffmpeg

Linux编译安装nginx并平滑升级和回滚