rucoding 2022-10-29 16:22 采纳率: 66.7%
浏览 90
已结题

nginx配置监听不同端口,实现访问对应不同项目服务

nginx配置监听不同端口,实现访问对应不同项目服务

服务器:Centos7
nginx version: nginx/1.23.1

①目前tomcat启动一个java项目,tomcat实际运行端口18082 nginx监听端口80
②springboot的jar包项目启动运行,实际运行占用端口9522 nginx监听端口19522

现在浏览器访问:www.r2cool.cn ==> nginx正常监听80端口,访问tomcat项目正常
但是,访问:www.r2cool.cn:19522 ==> 打不开,要能监听到19522端口,访问到springboot项目
另外,19522能监听的话,如下配置,域名能从http解析成https嘛?

Nginx配置文件如下:

user  root;
worker_processes  auto;
error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;
events {
  worker_connections  1024;
}
http {
  #include    /etc/nginx/mime.types;
  default_type application/octet-stream;
  log_format   main '$remote_addr - $remote_user [$time_local]  $status '
    '"$request" $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';
  access_log  /var/log/nginx/access.log  main;
  
  ##监听tomcat跑的项目 实际端口18082
  server {
    listen       80;
    server_name  www.r2cool.cn;
    rewrite ^(.*) https://$server_name$1 permanent;

    location / {
      proxy_set_header Host $host;
      proxy_set_header X-Real-Ip $remote_addr;
      proxy_set_header X-Forwarded-For $remote_addr; 
      proxy_pass      http://120.21.121.162:18082;
    }
  }
  
  ##spingboot跑的项目-实际端口9522 
  upstream r2cool {
    server 120.21.121.162:9522;
  }
  server {
    listen       19522;
    server_name  www.r2cool.cn;
    rewrite ^(.*) https://$server_name$1 permanent;

    # pass requests for dynamic content to rails/turbogears/zope, et al
    location / {
      proxy_pass      http://r2cool;
    }
  }
  server{
    listen 443 ssl;
    server_name folio.codingce.com.cn;
    ssl_certificate /etc/nginx/1_r2cool.cn_bundle.crt;
    ssl_certificate_key /etc/nginx/2_r2cool.cn.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
    ssl_prefer_server_ciphers on;
    charset utf-8;
    location / {
        proxy_pass      http://120.21.121.162:18082;
    } 
  }
}

  • 写回答

4条回答 默认 最新

  • 狂龙骄子 2022-10-29 18:43
    关注

    有几个调整,请试一下。
    1、考虑到安全,建议不要使用root启动nginx,创建一个不可登录用户nginx

    useradd -s /sbin/nologin -M nginx
    

    2、优化线程由默认的 1024,调整为 8192
    3、rewrite 转发中,由 $server_name 改为 $host
    4、查看nginx日志:

    • 错误日志 /var/log/nginx/error.log
    • 正常日志 /var/log/nginx/access.log

    以下是调整对比,供参考:

    img

    调整后的配置,请运行下试试,如有问题,再留言。

    user  nginx;
    worker_processes  auto;
    error_log  /var/log/nginx/error.log notice;
    pid        /var/run/nginx.pid;
    
    events {
      worker_connections  8192;
    }
    
    http {
      #include    /etc/nginx/mime.types;
      default_type application/octet-stream;
      log_format   main '$remote_addr - $remote_user [$time_local]  $status '
        '"$request" $body_bytes_sent "$http_referer" '
        '"$http_user_agent" "$http_x_forwarded_for"';
      access_log  /var/log/nginx/access.log  main;
      
      ##监听tomcat跑的项目 实际端口18082
      server {
        listen       80;
        server_name  www.r2cool.cn;
        rewrite ^(.*) https://$host$1 permanent;
     
        location / {
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Real-Ip $remote_addr;
          proxy_set_header X-Forwarded-For $remote_addr; 
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_pass      http://tomcat18082;
        }
      }
      
      # tomcat跑的项目-实际端口18082
      upstream tomcat18082 {
        server 120.21.121.162:18082 weight=1 max_fails=2 fail_timeout=30s;
      }
      
      # spingboot跑的项目-实际端口9522
      upstream r2cool {
        server 120.21.121.162:9522 weight=1 max_fails=2 fail_timeout=30s;
      }
      
      server {
        listen       19522;
        server_name  www.r2cool.cn;
     
        # pass requests for dynamic content to rails/turbogears/zope, et al
        location / {
          rewrite ^(.*) https://$host$1 permanent;
        }
      }
      
      server{
        listen 443 ssl;
        server_name folio.codingce.com.cn;
        
        ssl_certificate /etc/nginx/1_r2cool.cn_bundle.crt;
        ssl_certificate_key /etc/nginx/2_r2cool.cn.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
        ssl_prefer_server_ciphers on;
        
        charset utf-8;
        location / {
            proxy_pass      http://tomcat18082;
        } 
      }
    }
     
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 11月7日
  • 已采纳回答 10月30日
  • 创建了问题 10月29日

悬赏问题

  • ¥20 求计算赫斯特(Hurst)指数
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大