当前位置:首页 > CN2资讯 > 正文内容

CentOS nginx反向代理docker nginx 反向代理

2天前CN2资讯

nginx反向代理

什么是反向代理

  • 反向代理:用于公司集群架构,代理服务端

正向代理和反向代理的区别

  • 区别在于形式上服务的”对象”不一样
  • 正向代理代理的对象是客户端,为客户端服务
  • 反向代理代理的对象是服务端,为服务端服务

为什么学代理

  • 代理后端语言的服务(PHP、JAVA、Python....)
  • 国外服务器代理国内服务器,方便国外用户上网
反向代理模块总结

反向代理模式与Nginx代理模块总结如表格所示

反向代理模式 Nginx配置模块 http、websocket、https ngx_http_proxy_module fastcgi ngx_http_fastcgi_module uwcgi ngx_http_uwsgi_module grpc ngx_http_v2_module

nginx反向代理

环境准备

主机名 WanIP LanIP 角色 应用 web01 10.0.0.7 172.16.1.7 web网站 nginx、php、wordpress lb01 10.0.0.5 172.16.1.5 反向代理服务器 nginx db01 10.0.0.51 172.16.1.51 数据库 MariaDB

安装LNMP环境

## 1.yum下载下来的所有rpm结尾的包 [root@web01 ~]# find /var/cache/yum/ -type f -name '*.rpm' ## 2.开启yum缓存 [root@web01 ~]# vim /etc/yum.conf [main] keepcache=1 ## 3.添加nginx源 [root@web01 ~]# vim /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true ## 4.添加PHP源 [root@web01 ~]# vim /etc/yum.repos.d/php.repo [php-webtatic] name = PHP Repository baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/ gpgcheck = 0 ## 5.安装nginx和php [root@web01 ~]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb nginx ## 6.创建用户www [root@web01 ~]# groupadd www -g 666 [root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M ## 7.统一用户 # 修改nginx配置文件 [root@web01 ~]# vim /etc/nginx/nginx.conf user nginx 改成 user www # 修改php配置文件 [root@web01 ~]# vim /etc/php-fpm.d/www.conf user = apache 改成 user = www group = apache 改成 group = www ;listen = 127.0.0.1:9000 listen = /dev/php.sock listen.owenr = www listen.group = www ## 8.配置nginx连接php [root@web01 ~]# vim /etc/nginx/conf.d/.conf server{ listen 80; server_name ; root /blog; index index.php index.html; location ~ \.php$ { fastcgi_pass unix:/dev/php.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ## 9.启动nginx和php并加入开机自启 [root@web01 ~]# systemctl start nginx php-fpm [root@web01 ~]# systemctl enable nginx php-fpm ## 10.创建站点目录并授权 [root@web01 ~]# mkdir /blog [root@web01 ~]# chown -R www:www /blog ## 11.安装数据库 [root@db01 ~]# yum install -y mariadb-server ## 12.启动数据库并加入开机自启 [root@db01 ~]# systemctl start mariadb.service [root@db01 ~]# systemctl enable mariadb.service ## 13..给MySQL的root用户设置密码 [root@db01 ~]# mysqladmin -uroot -p password '123' Enter password: ## 14.进入MySQL [root@db01 ~]# mysql -uroot -p Enter password: ## 15.创建库 MariaDB [(none)]> create database wordpress; ## 16.查看数据库是否创建成功 MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | | wordpress | | wp | +--------------------+ 6 rows in set (0.00 sec) ## 17.授权数据库用户 MMariaDB [(none)]> grant all on *.* to wp_user@'172.16.1.%' identified by '123'; ## 18.查看用户 MariaDB [(none)]> select user from mysql.user; +---------+ | user | +---------+ | wp_user | | root | | root | | | | root | | | | root | +---------+ ## 19.下载wordpress [root@web01 blog]# wget https://cn.wordpress.org/latest-zh_CN.tar.gz ## 20.解压 [root@web01 blog]# tar xf latest-zh_CN.tar.gz ## 21.授权 [root@web01 blog]# chown www:www wordpress/ ## 22.修改配置文件 [root@web01 blog]# vim /etc/nginx/conf.d/.conf server{ listen 80; server_name ; root /blog/wordpress; index index.php index.html; ## 23.重启nginx [root@web01 blog]# systemctl reload nginx ## 24.## 域名解析到web01 10.0.0.7 ## 25.打开浏览器输入域名地址并设置网页

nginx做代理服务器(lb01)

# 1.安装nginx [root@lb01 ~]# yum install -y nginx # 2.添加nginx代理配置文件 [root@lb01 ~]# vim /etc/nginx/conf.d/_proxy.conf server{ listen 80; server_name ; location /{ proxy_pass http://172.16.1.7:80; } } ## 3.启动nginx并加入开机自启 [root@lb01 ~]# systemctl start nginx [root@lb01 ~]# systemctl enable nginx ## 4.域名解析 10.0.0.5 ## 以上配置存在的问题 lb01 通过 172.16.1.7 80端口访问后端的web01 因为是通过IP访问,所以,配置文件谁在上面,则访问哪个页面 解决方案:将域名加入到,lb01请求web01的请求头中 [root@lb01 ~]# vim /etc/nginx/conf.d/_proxy.conf server{ listen 80; server_name ; location /{ proxy_pass http://172.16.1.7:80; # 在代理服务器中的请求头中,加上域名,携带域去访问后端的web01服务器 proxy_set_header Host $host; } } 172.16.1.5 - - [14/Jun/2022:17:49:30 +0800] "GET /wp-includes/blocks/navigation/view.min.js?ver=009e29110e016c14bac4ba0ecc809fcd HTTP/1.0" 200 8334 "http:///" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36" "10.0.0.1" 10.0.0.1 - - [14/Jun/2022:17:49:30 +0800] "GET / HTTP/1.1" 200 61968 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36" "-" ## 上面的配置依然存在问题 web01上的nginx日志,只显示lb01的服务器IP地址,无法显示用户的真实IP地址 解决方案:在lb01的请求头中,加上用户真实IP去访问web01 [root@lb01 ~]# vim /etc/nginx/conf.d/_proxy.conf server{ listen 80; server_name ; location /{ proxy_pass http://172.16.1.7:80; # 在代理服务器中的请求头中,加上域名,携带域去访问后端的web01服务器 proxy_set_header Host $host; # 在代理的请求头中,透传用户的真实IP地址给web01 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 172.16.1.5 - - [14/Jun/2022:18:08:18 +0800] "GET / HTTP/1.0" 200 61899 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36" "10.0.0.1" ## 优化后的代理配置文件 server { listen 80; server_name ; location /{ proxy_pass http://172.16.1.7:80; ## 在代理服务器的请求头中,加上域名,携带域名去访问后端的web01服务器 proxy_set_header Host $host; ## 在代理服务器的请求头中,透传用户的真实IP地址给web01 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ## lb01连接web01的超时时间(代理服务器,连接后端服务的超时时间) proxy_connect_timeout 60s; ## lb01代理服务器读取web01返回的数据超时时间(代理后端的服务器响应代理服务器的超时时间) proxy_read_timeout 60s; ## 后端服务器回传给代理服务器数据的超时时间 proxy_send_timeout 60s; ## 开启代理服务器的缓冲区,代理服务器接收到web01返回的数据,接收一条,返回给用户一条 proxy_buffering on; ## 开启存放头部信息的缓冲区大小为 32k proxy_buffer_size 32k; ## 开启4个128k的存放数据主体的缓冲区 proxy_buffers 4 128k; } } ## 避免配置文件重复使用 [root@lb01 ~]# vim /etc/nginx/proxy_wsh ## 在代理服务器的请求头中,加上域名,携带域名去访问后端的web01服务器 proxy_set_header Host $host; ## 在代理服务器的请求头中,透传用户的真实IP地址给web01 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ## lb01连接web01的超时时间(代理服务器,连接后端服务的超时时间) proxy_connect_timeout 60s; ## lb01代理服务器读取web01返回的数据超时时间(代理后端的服务器响应代理服务器的超时时间) proxy_read_timeout 60s; ## 后端服务器回传给代理服务器数据的超时时间 proxy_send_timeout 60s; ## 开启代理服务器的缓冲区,代理服务器接收到web01返回的数据,接收一条,返回给用户一条 proxy_buffering on; ## 开启存放头部信息的缓冲区大小为 32k proxy_buffer_size 32k; ## 开启4个128k的存放数据主体的缓冲区 proxy_buffers 4 128k;
    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/32225.html

    分享给朋友:

    “CentOS nginx反向代理docker nginx 反向代理” 的相关文章

    中国电信CN2网络接入设置方法视频——轻松实现高速互联!

    在全球化的今天,跨国企业、学术机构甚至个人用户都对高速、稳定的跨国网络连接提出了更高的要求。而中国电信的CN2网络正是为满足这一需求应运而生的解决方案。无论是跨国视频会议、数据传输还是云服务访问,CN2网络都能为您提供高效、低延迟的网络体验。CN2网络的优势CN2网络是中国电信专门为跨国用户设计的高...

    甲骨文云免费申请详解:轻松获取免费云服务

    甲骨文云免费申请概述 当提到云服务的时候,甲骨文云绝对是一个值得关注的选项。甲骨文云(Oracle Cloud)是一项提供强大基础设施和服务的云计算平台,尤其在数据管理、分析和应用开发方面具有突出的优势。在这个日益数字化的时代,免费试用计划让用户能够亲自体验甲骨文云的强大功能,激起了很多人的好奇和兴...

    如何开启BBR查询并提升TCP网络性能

    BBR(Bottleneck Bandwidth and Round-trip propagation time)是一种由Google开发的TCP拥塞控制算法,我对它的了解让我感到非常兴奋。BBR旨在通过精确的网络条件监测,以提高传输速度和稳定性。传统的拥塞控制算法往往依赖于丢包率的变化来调整传输速...

    选择合适的Linux SSH工具来提升远程管理效率

    在数字化时代,远程连接与管理变得尤为重要。SSH(Secure Shell)是一种网络协议,用于通过不安全的网络安全地访问计算机。SSH技术保障了数据的隐私和完整性,并通过加密通道进行通信。当我第一次接触SSH时,它对于在不同计算机之间安全地进行操作以及文件传输是多么重要,印象深刻。 SSH不仅仅是...

    xTom:灵活可靠的IaaS解决方案,为企业提供优秀网络服务

    xTom是一家成立于2012年的私人控股公司,总部位于德国杜塞尔多夫。它专注于基础设施即服务(IaaS),为各种规模的企业提供可靠的网络和数据中心服务。我对这家公司印象深刻,因为他们提供的解决方案不仅全面,而且非常灵活,能够满足不同客户的需求。 作为一个专业的IaaS提供商,xTom涵盖的服务范围非...

    IPv6 测速方法与工具:提升网络体验的技巧

    IPv6 测速的基本概念 IPv6,作为互联网协议的最新版本,让我们在网络世界中畅游无阻。它的推出旨在解决IPv4所面临的地址枯竭问题,推进更加广泛的设备连接。简单来说,IPv6提供了更大的地址空间,能够支持越来越多的设备上线。因为万物互联的时代已经来临,我们的手机、电脑、家居设备甚至汽车都需要连接...