【问题标题】:How to make http(80) and https(443) work on different ports say 8000 for http and 4443 for https如何使 http(80) 和 https(443) 在不同的端口上工作,比如 8000 用于 http,4443 用于 https
【发布时间】:2021-01-14 03:54:01
【问题描述】:

如何让 http(80) 和 https(443) 在不同的端口上工作,比如 http 为 8000,https 为 4443

基本上我的要求是让请求来自端口 8000 而不是通常的端口 http 80 并且应该发生 https 重定向(被重定向)到端口说 4443 而不是常规的 https 端口 443。

上述情况是否可能。

如果是,我需要在 nginx default.conf 文件中进行哪些更改才能正常工作。

nginx web服务器常用的default.conf文件

server {


   if ($host = example.co.uk) {
        return 301 https://example.co.uk$request_uri;
    }


   server_name example.co.uk;
    listen 80;
    return 404;
}

server {

    listen 443 ssl;
    server_name example.co.uk;



    ssl_certificate           /etc/nginx/fullchain.pem;
    ssl_certificate_key       /etc/nginx/privkey.pem;
    ssl_buffer_size 8k;

    ssl_dhparam /etc/ssl/certs/dhparam-2048.pem;

#    listen ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1.3 TLSv1.2;
    ssl_prefer_server_ciphers on;

############################################################################################
    ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
    ssl_ecdh_curve secp384r1;
    ssl_session_tickets off;

    # OCSP stapling
    ssl_stapling on;
    ssl_stapling_verify on;
    

##########################################################################################

    access_log            /var/log/nginx/jenkins.access.log;

    location / {

      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_set_header        X-Forwarded-Proto $scheme;

      #####################################
      
#      proxy_buffers 8 8k;
#      proxy_buffer_size 8k;

      proxy_buffering         on;
      proxy_buffer_size       128k;
      proxy_buffers           4 256k;
      proxy_busy_buffers_size 256k;
      
      #####################################

      # Fix the “It appears that your reverse proxy set up is broken" error.
      proxy_pass          http://example:8080;
      #proxy_read_timeout  90;
      
      proxy_connect_timeout 600;
      proxy_send_timeout 600;
      proxy_read_timeout 600;
      send_timeout 600;

      proxy_redirect      http://example:8080 https://example:8080;
    }
  }

自定义的 nginx 的 default.conf 我试图让它现在没有成功

server {

   if ($host = example.co.uk:8000) {
        return 301 https://example.co.uk:4443$request_uri;
    }


   server_name example.co.uk;
    listen 8000;
    return 404;
}

server {

    listen 4443 ssl;
    server_name example.co.uk;



    ssl_certificate           /etc/nginx/fullchain.pem;
    ssl_certificate_key       /etc/nginx/privkey.pem;
    ssl_buffer_size 8k;

    ssl_dhparam /etc/ssl/certs/dhparam-2048.pem;

#    listen ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1.3 TLSv1.2;
    ssl_prefer_server_ciphers on;

############################################################################################
    ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
    ssl_ecdh_curve secp384r1;
    ssl_session_tickets off;

    # OCSP stapling
    ssl_stapling on;
    ssl_stapling_verify on;
    

##########################################################################################

    access_log            /var/log/nginx/jenkins.access.log;

    location / {

      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_set_header        X-Forwarded-Proto $scheme;

      #####################################
      
#      proxy_buffers 8 8k;
#      proxy_buffer_size 8k;

      proxy_buffering         on;
      proxy_buffer_size       128k;
      proxy_buffers           4 256k;
      proxy_busy_buffers_size 256k;
      
      #####################################

      # Fix the “It appears that your reverse proxy set up is broken" error.
      proxy_pass          http://example:8080;
      #proxy_read_timeout  90;
      
      proxy_connect_timeout 600;
      proxy_send_timeout 600;
      proxy_read_timeout 600;
      send_timeout 600;

      proxy_redirect      http://example:8080 https://example:8080;
    }
  }

有人可以帮我解决这个问题吗?

感谢和问候

【问题讨论】:

    标签: nginx


    【解决方案1】:

    有可能,我只是在我的服务器上完成的。但我从不更改 default.conf 文件。
    我在/etc/nginx/sites-available 中创建了一个文件,然后使用ln -s firstDirectory secondDirectory 创建了一个到/etc/nginx/sites-enabled 的快捷方式。
    我首先处理了对 8000 端口的 http 请求。
    然后我用certbot做ssl,把我文件里的443s改成4433。
    老实说,您的代码有点混乱,我以前从未使用过 default.conf 文件。但这是我的文件,希望你能弄清楚: https://gist.github.com/ParsaArvanehPA/3638c8729f6021c0ca8efc0df076fabb

    【讨论】:

      猜你喜欢
      • 2014-05-24
      • 2017-10-29
      • 1970-01-01
      • 2019-02-02
      • 2020-04-23
      • 1970-01-01
      • 2021-09-17
      • 2013-04-12
      • 1970-01-01
      相关资源
      最近更新 更多