nginx设置反向代理后只能通过ip地址访问,不能通过域名访问

问题描述

nginx设置反向代理后只能通过ip地址访问,不能通过域名访问,本意是想用nginx服务器配置https,然后将请求转发到nodejs服务器上,服务器是centos

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

clipboard.png

你期待的结果是什么?实际看到的错误信息又是什么?

通过https://ip地址的形式访问是成功的,页面有加载,在nginx的access日志上也能看到访问记录,通过https://域名的形式访问直接连...,access日志也没有访问记录,很奇怪不知道为什么ip地址访问https成功,通过域名访问https失败

貌似我的腾讯云服务器被暴力攻击了,我已经重置密码并且关机了,不知道这个跟问题是否有关,一开始配置的时候是可以通过域名访问https的,后面想配置80端口域名重定向到443的端口的时候突然就不行了,监听443端口的服务器配置之前没动过

阅读 9.1k
1 个回答

你的这个配置有问题
1、要考虑用户直接域名访问,非https的时候,你只监听443端口,那么http://www.badlc.xyz就访问不到你监听的端口,因为这个默认访问80端口。
2、需要作出一个兼容方案,不管用户是HTTP访问,还是HTTPS访问,我都能监听到。
3、你可以先不配置HTTPS,先用HTTP测试你的域名解析是否正常,即能通过HTTP访问到你的服务器

server { 
    listen 80; 
    server_name www.badlc.xyz;
    access_log /var/log/nginx/access.log;  // 请修改为你的log地址
    error_log /var/log/nginx/error.log; // 请修改为你的log地址
    location / { 

        proxy_pass  http://127.0.0.1:8080; // 本机代理本需要域名,只需要ip:端口,最好不要代理80端口
 
        #Proxy Settings
        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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
    }
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html {  
        root /usr/share/nginx/html; 
    } 
    location ~ /\.ht {  
        deny all;  
    } 
}

4、HTTPS配置


server {
    listen 80;
#    listen [::]:80;
    server_name www.badlc.xyz; 

    # Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
    return 301 https://$host$request_uri;
}

server {

    #使用HTTP/2,需要Nginx1.9.7以上版本
    listen 443 ssl http2;
    server_name www.badlc.xyz;

    #你的HTTPS配置


    location / { 

        proxy_pass  http://127.0.0.1:8080; // 本机代理本需要域名,只需要ip:端口,最好不要代理80端口
 
        #Proxy Settings
        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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
    }

    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
        root /usr/share/nginx/html; 
    } 
    location ~ /\.ht { 
        deny all; 
    } 
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题