『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 1749|回复: 6

[技术探讨] 双软路由NGINX反向代理问题

[复制链接]

14

主题

79

帖子

411

积分

中级会员

Rank: 3Rank: 3

积分
411
金钱
332
HASS币
0
发表于 2022-12-16 00:33:27 | 显示全部楼层 |阅读模式
本帖最后由 pisice 于 2022-12-16 00:34 编辑

家里的网络是双软路由,路由a:192.168.1.1  路由b:192.168.1.2, A对外拨号,DHCP,DNS缓存,DNS:192.168.1.2,B做网关,DNS 114.114.114.114  网关:A 就是所谓的旁路由。
现在的问题:网内有一台ubuntu做NGINX反向代理,访问HASS,同样的配置,代理服务器网关设置为A就可以外网访问HASS,网关设置成路由B,外网无法访问HASS,请高手帮忙看看。
nginx.conf:

user root;
worker_processes 4;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log info ;
worker_rlimit_nofile 65535;
include /etc/nginx/modules-enabled/*.conf;

events {
#        use epoll;
        worker_connections 65535;
        }

http {

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # Basic Settings
        ##
               
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        types_hash_max_size 2048;
        client_header_buffer_size 32k;
        server_names_hash_bucket_size 128;
        large_client_header_buffers 4 64k;
        client_max_body_size 75m;        
        keepalive_timeout 30000;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 8 64k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 128k;

        ##
        # SSL Settings
        ##

        ssl_certificate     /etc/nginx/cert/xxx.pem;
        ssl_certificate_key  /etc/nginx/xxx.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  30m;
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3 SSLv3 SSLv2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_prefer_server_ciphers  on;


        ##
        # Gzip Settings
        ##

        gzip on;
        gzip_vary on;
        gzip_comp_level 5;
        gzip_buffers 8 16k;
        gzip_http_version 1.1;
        gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

        ##
        # Virtual Host Configs
        ##

        map $http_upgrade $connection_upgrade {
                                        default upgrade;
                                        ''      close;
                                        }

}



hass.conf

server {

        listen 7443 ssl;
        charset uft-8;
        server_name home.pisice.top;

        if ($ssl_protocol = "") {
                                return 301 https://$host$request_uri;
                                }

        location / {

                proxy_pass http://192.168.1.10:8123;
                proxy_set_header Host $hostserver_port;     
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";


                        }
}



回复

使用道具 举报

18

主题

587

帖子

4293

积分

元老级技术达人

积分
4293
金钱
3671
HASS币
182
发表于 2022-12-16 10:49:46 | 显示全部楼层
本帖最后由 louis_lee 于 2022-12-16 11:20 编辑

你怎么做的外网穿透啊?有公网IP,DDNS解析到网关A的wan?或者是解析到云服务器,利用frp做穿透?
另外,把server_name隐去吧,不仅通过whois查到信息,还有可能存在潜在被攻击风险
回复

使用道具 举报

14

主题

79

帖子

411

积分

中级会员

Rank: 3Rank: 3

积分
411
金钱
332
HASS币
0
 楼主| 发表于 2022-12-16 12:41:16 | 显示全部楼层
louis_lee 发表于 2022-12-16 10:49
你怎么做的外网穿透啊?有公网IP,DDNS解析到网关A的wan?或者是解析到云服务器,利用frp做穿透?
另外,把s ...

多谢提醒,我是阿里云证书+域名,家里是公网IP,然后出口路由A用的是ROS,ros里面进行端口映射
回复

使用道具 举报

1

主题

132

帖子

1704

积分

金牌会员

Rank: 6Rank: 6

积分
1704
金钱
1572
HASS币
0
发表于 2022-12-16 13:01:40 | 显示全部楼层
pisice 发表于 2022-12-16 12:41
多谢提醒,我是阿里云证书+域名,家里是公网IP,然后出口路由A用的是ROS,ros里面进行端口映射 ...

折腾ros不如折腾openwrt,科学,ddns,都可以做到了,dns缓存作用不大,好像也可以做到
回复

使用道具 举报

18

主题

587

帖子

4293

积分

元老级技术达人

积分
4293
金钱
3671
HASS币
182
发表于 2022-12-16 13:28:11 | 显示全部楼层
本帖最后由 louis_lee 于 2022-12-16 13:37 编辑
pisice 发表于 2022-12-16 12:41
多谢提醒,我是阿里云证书+域名,家里是公网IP,然后出口路由A用的是ROS,ros里面进行端口映射 ...

OK。如果你设置Ubuntu的网关为B的时候,流量去程和回程走的不一样。去程走的外网-》网关A-》Ubuntu,回程是Ubuntu-》网关B-》网关A-》外网。
如果Ubuntu的网关保持B不变的话,你需要先把入口流量从ROS转到网关B,再从网关B转到Ubuntu。这样保证链路是一致的。

你网关B看起来像是Openwrt,这样的话也挺好设置的。
回复

使用道具 举报

14

主题

79

帖子

411

积分

中级会员

Rank: 3Rank: 3

积分
411
金钱
332
HASS币
0
 楼主| 发表于 2022-12-16 13:42:56 | 显示全部楼层
louis_lee 发表于 2022-12-16 13:28
OK。如果你设置Ubuntu的网关为B的时候,流量去程和回程走的不一样。去程走的外网-》网关A-》Ubuntu,回程 ...

受教了!!一语点醒梦中人,多谢多谢,我去试试
回复

使用道具 举报

14

主题

79

帖子

411

积分

中级会员

Rank: 3Rank: 3

积分
411
金钱
332
HASS币
0
 楼主| 发表于 2022-12-16 20:40:50 | 显示全部楼层
louis_lee 发表于 2022-12-16 13:28
OK。如果你设置Ubuntu的网关为B的时候,流量去程和回程走的不一样。去程走的外网-》网关A-》Ubuntu,回程 ...

按你说的进行设置,完美解决问题,再次感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-28 12:49 , Processed in 0.103583 second(s), 28 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表