Linux系统中使用Nginx实现反向代理

Posted aiguangyuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统中使用Nginx实现反向代理相关的知识,希望对你有一定的参考价值。

1. nginx的安装

1. 配置nginx安装包源

sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

如果不确定是否安装过nginx,可以用以下命令进行查询。

rpm -qa | grep nginx

配置完成后,可以用以下命令查询配置成功后的源。

cd /

cd etc/yum.repos.d/

ls

 2. 安装nginx

yum install -y nginx

3. 启动nginx

systemctl start nginx

启动后,在浏览器中输入服务器地址,如果可以出现欢迎页面,即表示安装成功。

4. 设置开机自启动nginx

sudo systemctl enable nginx

执行上面的命令后,如果想要查看设置开机启动是否成功,可以用以下命令进行查询。

systemctl list-unit-files | grep nginx

 

2. Nginx反向代理配置

1. 关闭SELinux

vi etc/selinux/config

执行上面的命令打开SELinux的配置文件,按 i 键进入编辑模式,SELINUX=enforcing 改为 SELINUX=disabled,然后按esc退出编辑模式,输入:wq 保存退出,执行以下命令使配置生效。

soure etc/selinux/config

如果配置没有生效,建议重启Linux。

init 6

2. 开启防火墙端口

查询开启的端口号。

firewall-cmd --zone=public --list-ports

开启80端口号。

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

3. 配置反向代理

查询nginx配置文件。

find / -name nginx.conf

执行以上命令后,便可以看到nginx主配置文件的路径了,如果想看主配置文件的内容,可以用以下命令。

cat /etc/nginx/nginx.conf

在nginx.conf主配置文件最后一行可以看出,该文件引入了其它的子配置文件,而这些子配置文件才是我们需要关注的。

进入到该目录下,查看引入的配置文件。

cd etc/nginx/conf.d/

ls

cat default.conf

如果想要对某个网站应用程序加入nginx的服务,只需要复制default.conf这个文件,修改文件里的

server_namelocation的内容,其中server_name为真实网站的域名,location的代码如下所示:

server {
    listen 80; 
    # server_name 的值为真实网站的域名
    server_name www.baidu.com;
    location / {
        # 设置主机头和客户端真实地址,以便服务器获取客户端真实IP
        proxy_set_header Host $host;
        proxy_set_header X- Real - IP $remote_addr;
        proxy_set_header X - Forwarded - For $proxy_add_x_forwarded_for;
        # 禁用缓存
        proxy_buffering off;
        # 反向代理的地址,端口号为真实网站的监听端口
        proxy_pass http://127.0.0.1:3001;
    }
    # 配置socket.io
    location /socket.io {        

        proxy_pass http://127.0.0.1:3001;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
    }
}

将修改完的复制文件重命名,与网站的域名相对应,如网站的域名为www.baidu.com,文件则命名为www_baidu_com,然后与default.conf放到同一个目录下。

要把多个网站的服务加入nginx中,则需要按上面的规则新建多个配置文件。

4. 重启nginx服务

systemctl restart nginx

如果无法启动,用以下命令检查错误,修复后再重启nginx。

nginx -t

如果还无法启动,可以先停止nginx,再启动。

systemctl stop nginx

systemctl start nginx

5. 未知错误的解决方案

(1). 重启操作系统后重新连接

inint 6

(2). 检查防火墙是否启动

systemctl is-active firewalld

如果结果为active则代表已启动。

(3). 检查nginx是否启动

systemctl is-active nginx

如果结果为active则代表已启动。

(4). 检查SELinux是否禁用

cat /etc/selinux/config

如果SELINUX=disabled则为禁用状态。

(5). 网站服务没有启动

cd /home/www_root/www_baidu_com/

pm2 start app.js -name www_baidu_com

如果有多个网站,则需要分别启动,启动完成后用以下命令检测一下。

pm2 list

如果显示表格中的服务均显示online则代表全部启动成功了。

(6). 防火墙中的80端口没有开启

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

firewall-cmd --reload

 

3. 域名测试

如果是在本地搭建的虚拟机,为了测试nginx是否配置成功,可以用以下方法。

找到“C:\\Windows\\System32\\drivers\\etc\\hosts”文件,添加域名映射。

# IP地址为虚拟机的地址,域名为网站域名
192.168.1.128 www.baidu.com

这样在浏览器中输入www.baidu.com域名,便会访问192.168.1.128的虚拟机服务器,再经过配置的www_baidu_com.conf这个nginx服务,最终会转发到了 127.0.0.1:3001这个地址。

以上是关于Linux系统中使用Nginx实现反向代理的主要内容,如果未能解决你的问题,请参考以下文章

【nginx】如何解决使用nginx作为反向代理端口耗尽问题?

linux+apache+nginx实现,反向代理动静分离

nginx下根据ua来源判断是启用静态目录还是使用反向代理

linux下实现nginx反向代理

Linux平台部署nginx反向代理实例

linux学习(JDK,Tomcat,nginx反向代理)