首页 > 编程知识 正文

nginx反向代理本地端口,nginx反向代理80端口

时间:2023-05-03 12:13:42 阅读:253257 作者:2867

文章目录 序言安装Nginx启动NginxNginx操作常用命令Nginx配置文件解析反向代理配置

序言

最近搭了一个博客网站,但是在访问的时候需要额外加上客户界面的端口号,显得比较low,所以想用nginx实现端口代理,访问80端口之后,自动转发到指定端口,这样间接的隐藏了访问的端口

安装Nginx

简要的介绍一下我安装nginx的步骤,已安装的可忽略

首先查看一下安装的版本 yum list | grep nginx


最后一列前缀含有@表明是已安装的

安装nginx yum install nginx或者yum -y install nginx

加上 -y 参数,即为全自动安装,因为在安装期间,会等待用户输入y/n,指导程序是否继续执行;加上y参数之后可完成自动安装。

安装完成之后,可以查看当前的nginx版本 nginx -v

相关文件夹
使用rpm -ql nginx查询Nginx的安装目录,如下图:
注:1、/etc/nginx/conf.d/ 文件夹,是我们进行子配置的配置项存放处,/etc/nginx/nginx.conf 主配置文件会默认把这个文件夹中所有子配置项都引入;
2、/usr/share/nginx/html/ 文件夹,通常静态文件都放在这个文件夹,也可以根据你自己的习惯放其他地方; 启动Nginx 查看防火墙设置

如果当前机器启用了防火墙,可以把防火墙关掉,或者在防火墙中添加相应的开放端口,下面附上防火墙相关的命令

systemctl start firewalld # 开启防火墙systemctl stop firewalld # 关闭防火墙systemctl status firewalld # 查看防火墙开启状态,显示running则是正在运行firewall-cmd --reload # 重启防火墙,永久打开端口需要reload一下# 添加开启端口,--permanent表示永久打开,不加是临时打开重启之后失效firewall-cmd --permanent --zone=public --add-port=8888/tcp# 查看防火墙,添加的端口也可以看到firewall-cmd --list-all 设置nginx开机自启 systemctl enable nginx 启动Nginx systemctl start nginx# linux中服务的启动都可以使用这样的形式,当然也会有停止、重启等,如:systemctl stop nginx、systemctl restart nginx等

这个是使用的系统命令进行服务的启动,当然nginx也自带相关的服务命令

Nginx操作常用命令 Nginx自带命令 nginx -s reload # 向主进程发送信号,重新加载配置文件,热重启nginx -s reopen # 重启 Nginxnginx -s stop # 快速关闭nginx -s quit # 等待工作进程处理完成后关闭nginx -T # 查看当前 Nginx 最终的配置nginx -t -c <配置路径> # 检查配置是否有问题,如果已经在配置目录,则不需要-c 使用系统命令 systemctl start nginx # 启动 Nginxsystemctl stop nginx # 停止 Nginxsystemctl restart nginx # 重启 Nginxsystemctl reload nginx # 重新加载 Nginx,用于修改配置后systemctl enable nginx # 设置开机启动 Nginxsystemctl disable nginx # 关闭开机启动 Nginxsystemctl status nginx # 查看 Nginx 运行状态 Nginx配置文件解析

如前面文件所示,Nginx的主配置文件为etc/nginx/nginx.conf,可以使用 cat命令命令进行查看cat -n nginx.conf

-n 参数在查看时,会显示行号

当然也可以直接使用vim命令进行编辑,vi nginx.conf,输入i即可进行编辑

配置文件目录 main # 全局配置,对全局生效├── events # 配置影响 Nginx 服务器或与用户的网络连接├── http # 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置│ ├── upstream # 配置后端服务器具体地址,负载均衡配置不可或缺的部分│ ├── server # 配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块│ ├── server│ │ ├── location # server 块可以包含多个 location 块,location 指令用于匹配 uri│ │ ├── location│ │ └── ...│ └── ...└── ...

一个 Nginx 配置文件的结构就像 nginx.conf 显示的那样,配置文件的语法规则:

配置文件由指令与指令块构成;
每条指令以 ; 分号结尾,指令与参数间以空格符号分隔;
指令块以 {} 大括号将多条指令组织在一起;
include 语句允许组合多个配置文件以提升可维护性;
使用 # 符号添加注释,提高可读性;
使用 $ 符号使用变量;
部分指令的参数支持正则表达式;

典型配置参数 user nginx; # 运行用户,默认即是nginx,可以不进行设置worker_processes 1; # Nginx 进程数,一般设置为和 CPU 核数一样error_log /var/log/nginx/error.log warn; # Nginx 的错误日志存放目录pid /var/run/nginx.pid; # Nginx 服务启动时的 pid 存放位置events { use epoll; # 使用epoll的I/O模型(如果你不知道Nginx该使用哪种轮询方法,会自动选择一个最适合你操作系统的) worker_connections 1024; # 每个进程允许最大并发数}http { # 配置使用最频繁的部分,代理、缓存、日志定义等绝大多数功能和第三方模块的配置都在这里设置 # 设置日志模式 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; # Nginx访问日志存放位置 sendfile on; # 开启高效传输模式 tcp_nopush on; # 减少网络报文段的数量 tcp_nodelay on; keepalive_timeout 65; # 保持连接的时间,也叫超时时间,单位秒 types_hash_max_size 2048; include /etc/nginx/mime.types; # 文件扩展名与类型映射表 default_type application/octet-stream; # 默认文件类型 include /etc/nginx/conf.d/*.conf; # 加载子配置项 server { listen 80; # 配置监听的端口 server_name localhost; # 配置的域名 location / { root /usr/share/nginx/html; # 网站根目录 index index.html index.htm; # 默认首页文件 deny 172.168.22.11; # 禁止访问的ip地址,可以为all allow 172.168.33.44;# 允许访问的ip地址,可以为all } error_page 500 502 503 504 /50x.html; # 默认50x对应的访问页面 error_page 400 404 error.html; # 同上 }}

server 块可以包含多个 location 块,location 指令用于匹配 uri,语法:

location [ = | ~ | ~* | ^~] uri {...}

指令后面:

=精确匹配路径,用于不含正则表达式的 uri 前,如果匹配成功,不再进行后续的查找;
^~ 用于不含正则表达式的 uri 前,表示如果该符号后面的字符是最佳匹配,采用该规则,不再进行后续的查找;
~ 表示用该符号后面的正则去匹配路径,区分大小写;
~* 表示用该符号后面的正则去匹配路径,不区分大小写。跟 ~优先级都比较低,如有多个location的正则能匹配的话,则使用正则表达式最长的那个;
如果 uri 包含正则表达式,则必须要有 ~ 或 ~* 标志。

反向代理配置 反向代理
反向代理是工作中最常用的服务器功能,经常被用来解决跨域问题,下面简单介绍一下如何实现反向代理。

解释一下跨域
当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域

打开并编辑nginx.conf文件

server { 39 listen 80; # 监听的端口 40 listen [::]:80 default_server; 41 server_name localhost; # 域名 42 root /usr/share/nginx/html; 43 44 # Load configuration files for the default server block. 45 include /etc/nginx/default.d/*.conf; 46 47 location / { 48proxy_pass http://localhost:8080; 49 } 50 }

在location中设置proxy_pass参数值,即为指定域名的跳转地址;当访问本地的80端口时,nginx服务器会自动的转发请求到8080端口。
注意:在修改完之后,需要重新加载配置文件,nginx -s reload

当然,不止是在本机的不同端口进行转发,也可以转发到另外一台服务器上面,把上面的proxy_pass的值设为http://www.baidu.com,访问本地即可访问百度首页。

实战

比如我们监听 9001 端口,然后把访问不同路径的请求进行反向代理:

把访问 http://127.0.0.1:9001/edu 的请求转发到 http://127.0.0.1:8080
把访问 http://127.0.0.1:9001/vod 的请求转发到 http://127.0.0.1:8081
这种要怎么配置呢,首先同样打开主配置文件,然后在 http 模块下增加一个 server 块:

server { listen 9001; server_name localhost; location ~ /edu/ { proxy_pass http://127.0.0.1:8080; } location ~ /vod/ { proxy_pass http://127.0.0.1:8081; }}

参考转自:
Nginx 从入门到实践,万字详解!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。