关于端口映射的问题(如何将端口转发给域名)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于端口映射的问题(如何将端口转发给域名)?相关的知识,希望对你有一定的参考价值。

我找了不少端口映射的软件,都只能把转发目标设置为某IP,可是我的转发目标是一个拨号上网的临时IP,有没有哪种端口转发软件可把转发目标设置为花生壳域名的?(请不要回答类似ping域名得到临时IP 的“临时方案”,我需要的是一种长久的无人值守自动工作的解决方案)
楼下的文章我看了,驴唇不对马嘴...请见多识广的同志们指一条明路

现在网络上流行的大多动态IP映射的脚本很不完善..
虽然都能达到外网可以通过映射的端口访问内网..但是在内网直接访问外网IP时就不行了..

我给楼主找了个文章 请看参考资料

参考资料:http://www.wbsz.com/html/14745.html

参考技术A 外网可以通过映射的端口访问内网 参考技术B 拨号的IP是动态的噢,那个就困难了,动态域名解析现在还是比较困难的 参考技术C 我感觉是不可能的,因为你拨号上网的IP在每次重启猫的时候,IP就会自动更换。

搭建Nginx反向代理做内网域名转发

由于公司内网有多台服务器的 http 服务要映射到公司外网静态 IP,如果用路由的端口映射来做,就只能一台内网服务器的 80 端口映射到外网 80 端口,其他服务器的 80 端口只能映射到外网的非 80 端口。非 80 端口的映射在访问的时候要域名加上端口,比较麻烦。

我们可以在内网搭建一个Nginx反向代理服务器,将Nginx反向代理服务器的80映射到外网IP的80,这样指向到公司外网IP的域名的HTTP请求就会发送到Nginx反向代理服务器,利用Nginx反向代理将不同域名的请求转发到内网不同机器的端口,就起到了根据域名自动转发到相应服务器特定端口的效果。

 

user www www;
worker_processes 1;
error_log logs/error.log;
pid logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 65535;
}


http {
    include mime.types;
    default_type application/octet-stream;
    include /usr/local/nginx/conf/reverse-proxy.conf;
    sendfile on;
    keepalive_timeout 65;
    gzip on;
    client_max_body_size 50m; 
    client_body_buffer_size 256k;
    client_header_timeout 3m;
    client_body_timeout 3m;
    send_timeout 3m;
    proxy_connect_timeout 300s;       #nginx 跟后端服务器连接超时时间(代理连接超时)

    proxy_read_timeout 300s; #连接成功后,后端服务器响应时间(代理接收超时)

    proxy_send_timeout 300s;
    proxy_buffer_size 64k;  #设置代理服务器(nginx)缓存

    proxy_buffers 4 32k; #proxy_buffers 缓冲区,网页平均在 32k 以下的话,这样设置

    proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
    proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从 upstream 服务器传递请求,而不缓冲到磁盘
    proxy_ignore_client_abort on; #不允许代理端主动关闭连接

        server {
            listen 80;
            server_name localhost;
                location / {
                    root html;
                    index index.html index.htm;
                    }
                error_page 500 502 503 504 /50x.html;
                location = /50x.html {
                    root html;
                }

        server {
                listen 80; 
                server_name www.test.com;
                access_log logs/test.com_access.log;

                location / { 
                        proxy_redirect off;
                        proxy_set_header Host $host;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_pass http://IP;

                }   
    
    
        }   
        server {
                listen 80; 
                server_name www.ceshi.com;
                access_log logs/ceshi.com_access.log;
                location / { 
                        proxy_redirect off;
                        proxy_set_header Host $host;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_pass http://IP;    
                }   
        }   


 

要想能记录真实IP,需要修改后端机器的日志格式,假设后端也是一台nginx:在后端配置文件里面加入下面这一段即可:

log_format access $HTTP_X_REAL_IP - $remote_user [$time_local] "$request" 
$status $body_bytes_sent "$http_referer" 
"$http_user_agent" $HTTP_X_Forwarded_For;

access_log logs/access.log access;

然后重新加载 nginx 配置文件,使之修改生效,再把域名指向公司静态 IP,这样就成功的做到了在浏览器中输入不同域名,指向到内网不同服务器的效果

 




以上是关于关于端口映射的问题(如何将端口转发给域名)?的主要内容,如果未能解决你的问题,请参考以下文章

搭建nginx反向代理用做内网域名转发

搭建Nginx反向代理做内网域名转发

mac无法使用80端口问题

Nginx端口转发, 怎么做到不用二级目录?

配置小米路由器 80 端口转发到内网

SSH -R 远程端口转发