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

问题描述 投票:0回答:1

我的要求是使请求来自端口 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个回答
0
投票

有可能,我刚刚在我的服务器上做到了。但我从不更改default.conf文件。
我在

/etc/nginx/sites-available
中创建了一个文件,然后使用
/etc/nginx/sites-enabled
创建了
ln -s firstDirectory secondDirectory
的快捷方式。
我首先处理了8000端口的http请求。
然后我使用certbot制作ssl,并将文件中的443更改为4433。
老实说,您的代码有点令人困惑,我以前从未使用过 default.conf 文件。但这是我的文件,希望你能弄清楚: https://gist.github.com/ParsaArvanehPA/3638c8729f6021c0ca8efc0df076fabb

© www.soinside.com 2019 - 2024. All rights reserved.