Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何强制HTTPS请求的端口转发 #4325

Closed
3 of 11 tasks
xhzkp opened this issue Jul 9, 2024 · 12 comments
Closed
3 of 11 tasks

如何强制HTTPS请求的端口转发 #4325

xhzkp opened this issue Jul 9, 2024 · 12 comments

Comments

@xhzkp
Copy link

xhzkp commented Jul 9, 2024

Describe the feature request

刚上手FRP, 对有些配置看了相关文档或教程后还是不太理解, 请求路过大佬指点江山! 非常感谢!

问题描述如下:

公网的FPRS服务端配置FRPS.toml如下:
bindPort = 7000


内网的FRPC客户端配置FRPC.toml如下:
serverAddr = "1.2.3.4"
serverPort = 7000

[[proxies]]
name = "Port 2222 Server"
type = "tcp"
localIP = "192.168.1.2"
localPort = 2222
remotePort = 6000


这里假设服务器IP1.2.3.4绑定的域名是1234.com
外网通过下面的链接可以成功访问到内网192.168.1.2主机的2222端口
http://1234.com:6000

但是我想强制使用https来访问2222端口, 即:
A. 当使用 http://1234.com:6000 访问时, 不需要对这个访问进行响应
B. 只有使用 https://1234.com:6000 访问时, 内网192.168.1.2主机的2222端口才能接收响应

假设我已经有 1234.com域名的https证书, 我需要怎样调整客户端或服务器的配置文件? 感谢

Describe alternatives you've considered

No response

Affected area

  • Docs
  • Installation
  • Performance and Scalability
  • Security
  • User Experience
  • Test and Release
  • Developer Infrastructure
  • Client Plugin
  • Server Plugin
  • Extensions
  • Others
@superzjg
Copy link

superzjg commented Jul 9, 2024

@xhzkp
Copy link
Author

xhzkp commented Jul 9, 2024

https://gofrp.org/zh-cn/docs/examples/https2http/

感谢大佬支招, 我看这个配置是在客户端配置的, 把证书都放在了客户端, 这个实在不方便, 也非常不现实...
不能在服务端配置吗? 如果不能在服务端实现我的需求, 那也只能放弃了...
我的想法是, 拷贝客户端到任意一台电脑上, 然后我就能访问这台电脑, 这台电脑做一下基本的token认证就行了, 但是访问要用https访问

@JsonSong89
Copy link

自己用nginx再转一下吧
说实话我也觉得客户端配置证书很奇怪

@xhzkp
Copy link
Author

xhzkp commented Jul 9, 2024

自己用nginx再转一下吧 说实话我也觉得客户端配置证书很奇怪

现在用 serveo.net 直接支持https

@xhzkp
Copy link
Author

xhzkp commented Jul 12, 2024

自己用nginx再转一下吧 说实话我也觉得客户端配置证书很奇怪

大佬能给指个明路吗? 怎样用nginx转? 我现在服务器有apache和php的网站, 不想影响它们, 再加个nginx, 再加上frp, 感觉太乱了
用下面这个就不支持用户面板插件了
https://gofrp.org/zh-cn/docs/examples/https2http/

@JsonSong89
Copy link

apache 应该也有类似功能吧
nginx的话很简单

server {
    listen 1444 ssl;
    server_name  _;
    ssl_certificate     /etc/nginx/ca/fullchain1.pem;
    ssl_certificate_key /etc/nginx/ca/privkey1.pem;
    ssl_session_cache shared:SSL:1m;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    #设置长连接
    keepalive_timeout   60;
    root   /home/static/;

    location / {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Range $http_range;
      proxy_set_header If-Range $http_if_range;
      proxy_redirect off;
      proxy_pass http://127.0.0.1:19371/;
      client_max_body_size 200m;
    }
}

@lhqiang
Copy link

lhqiang commented Jul 17, 2024

@JsonSong89 你的配置可以了吗,nginx配置基本一致,frp配置如下 不行
frps.toml配置
bindPort = 8080 vhostHTTPPort = 8081 #二级域名 subdomainHost = "域名"

frpc.toml配置
`serverAddr = ""
serverPort = 8080

[[proxies]]
name = "test"
subdomain = "test"
type = "http"
localIP = "127.0.0.1"
localPort = 8080
transport.proxyProtocolVersion = "v2"`

@JsonSong89
Copy link

@JsonSong89 你的配置可以了吗,nginx配置基本一致,frp配置如下 不行 frps.toml配置 bindPort = 8080 vhostHTTPPort = 8081 #二级域名 subdomainHost = "域名"

frpc.toml配置 `serverAddr = "" serverPort = 8080

[[proxies]] name = "test" subdomain = "test" type = "http" localIP = "127.0.0.1" localPort = 8080 transport.proxyProtocolVersion = "v2"`

你和楼主的不是一回事啊
楼主是tcp ,只要能把http proxy过去就可以

你这是三级域名,应该是包含了host认证的环节吧
nginx里面手动指定host试试

@JsonSong89
Copy link

类似这样的

	location /chatproxy/ {
        proxy_set_header Host api.openai.com;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass https://api.openai.com/;
        client_max_body_size 10M;
        client_body_buffer_size 128k;
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        proxy_buffer_size 4k;
        proxy_buffers 4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
        proxy_set_body $request_body;
        proxy_ssl_server_name on;
	}


@lhqiang
Copy link

lhqiang commented Jul 17, 2024

@JsonSong89 试过了不行,用了个旧版本可以了

@JsonSong89
Copy link

@JsonSong89 试过了不行,用了个旧版本可以了
frp只要能提供http服务(三级域名可以访问)
后面的事其实压根和frp没什么关系,所以不存在什么版本问题
看看你nginx配置吧

Copy link

github-actions bot commented Aug 8, 2024

Issues go stale after 21d of inactivity. Stale issues rot after an additional 7d of inactivity and eventually close.

@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Aug 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants