Nginx 配置反向代理
发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,一、前言反向代理作用隐藏服务器信息 -> 保证内网的安全,通常将反向代理作为公网访问地址,web服务器是内网,即通过nginx配置外网访问web服务器内网举例比如小编的码云个人博客地址为:http:/
千家信息网最后更新 2024年11月24日Nginx 配置反向代理
一、前言
反向代理作用隐藏服务器信息 -> 保证内网的安全,通常将反向代理作为公网访问地址,web服务器是内网,即通过nginx配置外网访问web服务器内网
举例比如小编的码云个人博客地址为:http://zhengqingya.gitee.io/blog/ ,现在小编想通过自己的服务器地址 http://www.zhengqing520.com/blog/ 来访问到码云上面个人博客的地址,并且访问地址是自己的服务器ip或者域名地址,这时候我们就可以通过Nginx配置反向代理来实现 ~
二、Nginx如何配置反向代理呢?
我们可以通过 proxy_pass 来配置
(1)找到nginx配置文件 nginx.conf
温馨小提示小编是通过docker拉取的nginx,默认配置文件是nginx.conf中引入包含的default.conf文件
也就是说nginx.conf配置文件中有如下一个配置
include /etc/nginx/conf.d/*.conf;
(2)修改配置 -> 实现反向代理
注:这里小编将我的default.conf配置文件中的内容提到nginx.conf配置文件中来实现
即注释 include /etc/nginx/conf.d/*.conf;
简单配置
比如 www.zhengqing520.com 转发到 http://zhengqingya.gitee.io
server { listen 80; server_name www.zhengqing520.com;# 服务器地址或绑定域名 location / { # 访问80端口后的所有路径都转发到 proxy_pass 配置的ip中 root /usr/share/nginx/html; index index.html index.htm; proxy_pass http://zhengqingya.gitee.io; # 配置反向代理的ip地址和端口号 【注:url地址需加上http:// 或 https://】 }}
复杂配置
根据不同的后缀名访问不同的服务器地址
- www.zhengqing520.com/api 转发到 http://www.zhengqing520.com:9528/api/
- www.zhengqing520.com/blog/ 转发到 http://zhengqingya.gitee.io/blog/
server { listen 80; server_name www.zhengqing520.com;# 服务器地址或绑定域名 location ^~ /api { # ^~/api 表示匹配前缀为api的请求 proxy_pass http://www.zhengqing520.com:9528/api/; # 注:proxy_pass的结尾有/, -> 效果:会在请求时将/api/*后面的路径直接拼接到后面 # proxy_set_header作用:设置发送到后端服务器(上面proxy_pass)的请求头值 # 【当Host设置为 $http_host 时,则不改变请求头的值; # 当Host设置为 $proxy_host 时,则会重新设置请求头中的Host信息; # 当为$host变量时,它的值在请求包含Host请求头时为Host字段的值,在请求未携带Host请求头时为虚拟主机的主域名; # 当为$host:$proxy_port时,即携带端口发送 ex: $host:8080 】 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # 在web服务器端获得用户的真实ip 需配置条件① 【 $remote_addr值 = 用户ip 】 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 在web服务器端获得用户的真实ip 需配置条件② proxy_set_header REMOTE-HOST $remote_addr; # proxy_set_header X-Forwarded-For $http_x_forwarded_for; # $http_x_forwarded_for变量 = X-Forwarded-For变量 } location ^~ /blog/ { # ^~/blog/ 表示匹配前缀为blog/后的请求 proxy_pass http://zhengqingya.gitee.io/blog/; proxy_set_header Host $proxy_host; # 改变请求头值 -> 转发到码云才会成功 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; }}
三、总结
这里再给出一下小编nginx配置文件中的全部内容以供参考
user nginx;worker_processes 1;error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;events { worker_connections 1024;}http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; # include /etc/nginx/conf.d/*.conf; # 引入default.conf配置文件 server { listen 80; server_name www.zhengqing520.com;# 服务器地址或绑定域名 #charset koi8-r; #access_log /var/log/nginx/host.access.log main; # start --------------------------------------------------------------------------------------------- location / { root /usr/share/nginx/html; try_files $uri $uri/ @router; index index.html index.htm; # proxy_pass http://zhengqingya.gitee.io; # 代理的ip地址和端口号 # proxy_connect_timeout 600; #代理的连接超时时间(单位:毫秒) # proxy_read_timeout 600; #代理的读取资源超时时间(单位:毫秒) } location @router { rewrite ^.*$ /index.html last; } location ^~ /api { # ^~/api/表示匹配前缀为api的请求 proxy_pass http://www.zhengqing520.com:9528/api/; # 注:proxy_pass的结尾有/, -> 效果:会在请求时将/api/*后面的路径直接拼接到后面 # proxy_set_header作用:设置发送到后端服务器(上面proxy_pass)的请求头值 # 【当Host设置为 $http_host 时,则不改变请求头的值; # 当Host设置为 $proxy_host 时,则会重新设置请求头中的Host信息; # 当为$host变量时,它的值在请求包含Host请求头时为Host字段的值,在请求未携带Host请求头时为虚拟主机的主域名; # 当为$host:$proxy_port时,即携带端口发送 ex: $host:8080 】 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # 在web服务器端获得用户的真实ip 需配置条件① 【 $remote_addr值 = 用户ip 】 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 在web服务器端获得用户的真实ip 需配置条件② proxy_set_header REMOTE-HOST $remote_addr; # proxy_set_header X-Forwarded-For $http_x_forwarded_for; # $http_x_forwarded_for变量 = X-Forwarded-For变量 } location ^~ /blog/ { # ^~/blog/ 表示匹配前缀为blog/后的请求 proxy_pass http://zhengqingya.gitee.io/blog/; proxy_set_header Host $proxy_host; # 改变请求头值 -> 转发到码云才会成功 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; } # end --------------------------------------------------------------------------------------------- #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }}
配置
服务器
服务
地址
代理
文件
变量
域名
用户
前缀
条件
作用
信息
端口
路径
不同
成功
个人
主机
内容
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
青岛乐透互联网科技有限公司
区块链分布式数据库架构图
金马软件开发测试
网络安全法保护个人信息安全
云南网络技术学院工资
数据库采集与维护
如何识别健康码服务器
数据库挽救了notion
toc公共赛专属服务器怎么进入
济南物流软件开发公司
靠谱的销售管理软件开发企业
t550塔式服务器
网络安全尖兵队伍
修改数据库记录的命令是什么
v2rayng服务器代理
新硬盘直接插到服务器
吃鸡游戏服务器有几个
学术文献数据库可用来干什么
深圳工业软件开发价钱是多少
数据库中如何查询日志记录
网络安全阐述
火车票软件开发
软件开发 属于什么职业
yii数据库连接
信息技术是指网络技术吗
进入贫困生数据库有什么坏处
普法宣传第三篇网络安全法
如何快速部署一台h5表单服务器
软件开发功能点法工作量法
android服务器管理