首页 > 系统相关 >家宽nginx反代https网站建设 利用页面规则实现不用80端口也可访问

家宽nginx反代https网站建设 利用页面规则实现不用80端口也可访问

时间:2022-09-30 13:24:12浏览次数:55  
标签:domain http 反代 ssl 端口 nginx https com

家宽nginx反代https网站建设 利用页面规则实现不用80端口也可访问

0x01 环境

1、一台 linux 主机

2、电信网

3、路由器(分配有公网 ip)

0x02 nginx 反代 部署

2.1 原理

反向代理即把内网服务映射到公网地址上。(优点,可以直接公网地址访问)

正向代理即你挂公网主机的 vpn,然后访问内网。(缺点,要挂 vpn)

2.2 nginx 部署反向代理

我内网有多个应用,我的路由器获得了公网 ip 地址(没有就百度想办法)。路由器开启端口转发,即可用 `公网ip:端口` 访问内网资源。注意公网端口不要用 ==80、443==​,因为国内运营商为了防止家宽建站把这些封了。只要换其他端口就可以使用。

2.21 安装 nginx 环境

这步网上很多教程,我是用 docker 的方式安装,你也可以使用 `apt install nginx` 命令一步到位安装

主要用到的文件有 `/etc/nginx/nginx.conf` ` /etc/nginx/conf.d/default.conf`

参考公网环境#​

1、域名和端口:domain.myhost.com:2333

2、路由映射:2333 <-> linux主机ip:443

2.22 nginx 配置

更改配置前记得备份。`cp nginx.conf .nginx.conf.bak `

先编辑 nginx.conf 文件,设置 upstream 负载均衡,再添加 server 服务器。

为什么不去 `/etc/nginx/conf.d/` 目录下添加配置文件呢,因为那样我需要把 ssl 证书重新写一遍。但那样也会灵活一些。两种方式看你们吧

方式一(我的方式)

1、打开 nginx.conf vim /etc/nginx/nginx.conf

2、添加配置,我的配置信息已经脱敏处理了。不要有其他想法哦

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
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;

    #ssl配置(23行-28行)不用可以不写,不然找不到证书路径会报错
    ssl_certificate /etc/nginx/ssl/*.myhost.com/fullchain.cer;
    ssl_certificate_key /etc/nginx/ssl/*.myhost.com/*.myhost.com.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;

	# 添加名为domain的负载均衡服务
    upstream domain{
      ip_hash;
	# server 写要反向代理的服务器,可以是域名,也能有多个server
      server 192.168.1.1:9000;
  }
	# 启动服务,监听端口,进行方向代理
    server {
	# 没有ssl的直接 listen 80;
      listen 443 ssl;
	# 这里即从公网访问来的域名,每个http请求都会有个host字段,nginx可以读取这字段进行转发
      server_name domain.myhost.com;
	# 启用路径服务,将根目录代理到名为 domain 的负载均衡服务
      location / {
      proxy_pass http://domain;
      }
	# 启用跳转,$http_host保留端口,将http请求变成https请求,建议开启ssl的写,不然 http:域名:端口 会出现错误
      error_page 497 301 https://$http_host$request_uri;

	# 有网盘需求的添加以下配置:1、分别为nginx不缓存请求    2、不设置客户端能传送的最大数据
	# 不添加可能出现传不了文件的情况
	#proxy_request_buffering off;
      	#client_max_body_size 0;
   }

	# 如果需要添加多几个服务,也是一样的
    upstream domain2{
      ip_hash;
      server 192.168.1.1:9000;
  }
    server {
      listen 443 ssl;
      server_name domain2.myhost.com;
      location / {
      proxy_pass http://domain2;
      proxy_set_header Host $http_host;
      }
      error_page 497 301 https://$http_host$request_uri;
    }
}

配置好后执行 systemctl nginx restart 或者 docker restart nginx(你的容器名字)

0x03 cloudflare 页面规则实现不添加端口访问服务

上面配置好后,外网访问 `http://domain.myhost.com:2333` 即可访问到内网对应服务器 domain,访问 `http://domain2.myhost.com:2333` 即可访问到服务器 domain2

但是有没有办法实现:`domain.myhost.com` `domain2.myhost.com` 不添加端口直接访问到对应服务器呢?这就要用到页面规则了

页面规则即你的 dns 服务商,比如腾讯的 dnspod 阿里的 alibaba dns 等。使用这功能的前提是你有两个域名,这样你就可以设置另外一个域名,比如 `domain.a.com` 跳转到 `http://domain.b.com:2333`

是的,即 301 跳转到某个 url 页面。

cloudflare 页面规则配置如下

1、登录 cloudflare,选择你的另外一个域名 a.com,

2、 点击创建页面规则

3、 输入如下

含义解释

* 代表任意字符

$1 表示第一处的任意字符替换

$2 表示第二次的任意字符替换

当你输入 www.a.com/index.php 时,$1 的值为 www. $2 的值为 index.php

可以实现不同子域的跳转

dns 配置如下

分别添加如下记录,一定要点亮小云朵

名称分别分别为 www @ * 内容写 8.8.8.8

至此访问 domain.a.com 即可跳转到 http://domain.myhost.com:2333

标签:domain,http,反代,ssl,端口,nginx,https,com
From: https://www.cnblogs.com/beidaxmf/p/16744589.html

相关文章

  • linux下使用yum安装nginx
    上一次发了本地安装nginx,这次发一个yum安装nginx1.安装nginx源我们本机有的可能没有附带nginx源,所以我们这里先进行安装一个nginx源#rpm-ivhhttp://nginx.org/packag......
  • 用IO多路复用实现 nginx 静态资源代理(C/Java/Golang)
    用IO多路复用实现nginx静态资源代理(C/Java/Golang)效果展示代理HTML代理图片注意,静态资源代理基于HTTP,可以了解上一篇文章:几十行代码使用TCP简单实现HTT......
  • 在 nginx 中配置 HSTS 并禁用 TLS 1.0、1.1
    可以使用以下地址工具按需生成nginx配置https://ssl-config.mozilla.org/#server=nginxHSTS的配置为:#HSTS(ngx_http_headers_moduleisrequired)(63072000seco......
  • 测试架构师必备技能-Nginx安装部署实战
    每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试,领取资料可加:magetest码同学抖音号:小码哥聊软件测试Nginx("en......
  • 《吐血整理》高级系列教程-吃透Fiddler抓包教程(26)-Fiddler如何抓取Android7.0以上的
    1.简介众所周知,假如设备是android7.0+的系统同时应用设置targetSdkVersion>=24的话,那么应用默认是不信任安装的Fiddler用户证书的,所以你就没法抓到应用发起的https请求......
  • ## nginx 使用
    nginx使用一、概述有一个域名,有一台服务器,有多个服务。为了可以通过域名来访问服务器上的不同服务,而不将端口对外暴露。采用nginx来进行转发。二、nginx安装不同......
  • http和https分别是什么?
    http中文名:超文本传输协议英文名:HyperTextTransferProtocol解释:是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到......
  • Nginx平滑升级版本
    Nginx平滑升级版本一,查看现目前版本,准备预升级版本的安装包#查看nginx版本/usr/local/nginx/sbin/nginx-v#测试nginx访问是否正常,此处开放的为19999端口#新建下载......
  • Nginx学习
    参考:https://www.bilibili.com/video/BV13a411q753/?spm_id_from=333.337.search-card.all.click&vd_source=c85b4a015a69e82ad4f202bd9b87697fNginx概述Nginx是一款轻量......
  • nginx 配置静态网页
    nginx配置静态网页进入配置文件/etc/nginx/conf.d/default.conf配置的时候小伙伴们一定要记得先备份一份文件,这样方便后续出错恢复!server{  listen   端口号;......