• 你的位置:性药价钱, > 迷情药商城 >

  • 一篇学会 Nginx与Tomcat 打和谐
    发布日期:2025-05-10 16:57    点击次数:147
    [[442098]] 弁言

    前一阵子用nginx摊派了我网站由tomcat处理的的http劳动,本文就跟环球共享下我的实战历程,以及何如从0驱动用nginx来造访你的前端神态,接待列位感兴致的拓荒者阅读本文。

    写在前边

    我开源神态[1]的第三方登录模块用到了localStorage来取得用户的授权恶果,前几天有个网友响应说他从我著述的链接中点进去没法登录。

    经过一番排查后,我发现我在著述中留的链接是https://kaisir.cn/chat-system[2],而第三方鉴权回调诞生的链接是https://www.kaisir.cn/chat-system[3]。由于我域名默契何处竖立了@造访与www造访指向的王人是并吞个网站,因此两者造访界面交流。然则回调地址中有www,肯求授权的造访界面莫得www,出现了跨域问题。

    迷水商城

    跨域后,localStorage里的东西当然是不一样的,因此就出现了这个网友所说的问题。

    管制想法

    既然两者造访的王人是并吞个劳动器上的资源,那么咱们就不错在劳动端竖立重定向,当肯求的地址莫得捎带www时,咱们就给他重定向到带www的地址。

    迷水商城

    于是我搜了一波使用tomcat竖立未捎带www的网站自动添加www,看了一眼决策,比拟繁难,不思折腾。

    使用nginx管制这个问题

    经过一番搜索后,我发现使用nginx管制这个问题比拟浮浅,于是我花了极少时候学了下nginx,完好管制了这个问题。

    防御:本文不先容何如安设nginx,对此不了解的拓荒者,请移步nginx官网[4]进行学习。

    迷水商城 移除tomcat的竖立

    当先咱们先把tomact已竖立好的一些http劳动移战抖,此处要删除的有:http造访跳转https、域名文凭、静态资源。

    迷水商城

    防御:若是你莫得使用tomcat不错跳过此章节, 径直学习nginx的干系竖立。

    迷水商城365站群VIP

    关闭https造访,删除域名文凭

    咱们掀开tomcat的conf目次下的server.xml,找到Service标签里port为80的Connector标签,删除标签内的redirectPort属性,如下图所示。

    防御:你还需要修改port的值,将其改为率性一个非80的值,因为nginx需要使用80端标语。

    随后,络续找port为443的Connector标签,将其删除,如下图所示。

    迷水商城

    临了,删除你目次下后缀为jks的域名文献即可。

    删除静态资源

    掀开tomcat的webapps目次将你的静态资源(前端神态)删掉即可。

    迷水商城

    麦克奈因催情迷幻喷剂 关闭http强跳https

    咱们掀开tomcat的conf目次下的web.xml文献,找到login-config标签和security-constraint的推行,将其删除,如下所示:

    <!--开启http强制跳转https造访--> <login-config>     <!-- Authorization setting for SSL -->     <auth-method>CLIENT-CERT</auth-method>     <realm-name>Client Cert Users-only Area</realm-name> </login-config> <security-constraint>     <!-- Authorization setting for SSL -->     <web-resource-collection>         <web-resource-name>SSL</web-resource-name>         <url-pattern>/*</url-pattern>     </web-resource-collection>     <user-data-constraint>         <transport-guarantee>CONFIDENTIAL</transport-guarantee>      </user-data-constraint> </security-constraint> 

     

     

    竖立nginx

    接下来,咱们来竖立nginx,让它来全面收受客户端的http肯求,反向代理tomcat提供的劳动,得手与tomcat完成和谐。

    竖立捏造主机

    当先,咱们需要先把捏造主机竖立好,它的作用即是模块化管制你的系数劳动器资源,幸免一起王人一股脑的写入nginx的主竖立文献,从而导致的可珍爱性镌汰问题。

    咱们掀开nginx的conf目次,在其目次下找到virtualhost.conf的文献(若是莫得则需要手动创建),该文献的作用即是将系数的劳动器竖立引入进来进行长入管制,掀开文献后,咱们写入如下所示的推行:

    # VirtualHost Configuration.  # 默许存在的,若是不存在不错不睬 include vhosts/localhost.vhost; # 咱们新加的 include vhosts/kaisir.cn; 

    在上头的竖立文献中,咱们新加了一个kaisir.cn的竖立,咱们需要在vhosts目次下创建这个文献,这个目次亦然在conf目次中的(若是莫得就我方创建),咱们径直创建这个文献即可。

    防御:创建的文献弗成包含后缀名,若是你有多个期骗则在此处创建,然后在virtualhost.conf文献中使用include提醒进行引入即可。

    随后,咱们掀开conf目次下的nginx.conf文献,把刚才创建的virtualhost.conf文献引入进去,咱们找到http标签,在标签里面添加如下所示的推行:

    # ...其他推行不祥...  http {     # 引入劳动竖立文献     include virtualhost.conf; } 

    作念完上述操作后,咱们就不错惬心的裁剪咱们在vhosts目次下创建的文献了。

    劳动器竖立文献

    在上述竖立中,咱们在vhosts目次下创建的文献即是咱们的劳动器竖立文献了,春药QQ群http造访的干系竖立王人是在此文献中进行写入。

    竖立端口监听

    咱们掀开前边创建的kaisir.cn文献,写入如下所示的推行:

    迷水商城
    server {     listen          80;     listen      443 ssl;     } 

    上述竖立中:

    server 为本文献的根提醒,本章节后头系数的竖立王人是写在这个这个提醒里面的 listen 监听80端口(即闲居http的造访) listen 监听443端口以及ssl造访(即https的造访) 竖立ssl文凭

    咱们写入如下所示的代码用来竖立https造访时所需的ssl文凭文献:

    # 竖立ssl文凭 ssl_certificate   /Users/likai/nginx-website/conf/kaisir.cn/1_kaisir.cn_bundle.crt; ssl_certificate_key  /Users/likai/nginx-website/conf/kaisir.cn/2_kaisir.cn.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;        ssl_prefer_server_ciphers on; 

    上述竖立中,咱们主要修改2个部分的竖立:

    ssl_certificate 你域名的ssl文凭文献位置(文献类型一定为crt方法的) ssl_certificate_key 你域名文凭所对应的密钥文献 (文献类型一定为key方法的)

    防御:ssl文凭需要去你域名的注册商何处下载

    迷水商城 竖立网站造访旅途

    接下来,咱们来竖立下每个造访旅途所指向的静态资源(前端神态),咱们会用location提醒来竖立一条旅途的造访,如下所示,咱们竖立了域名的根目次指向(即/的含义),提醒里面永别指定了静态资源在硬盘中的旅途以及默许的首页文献。

    # 根旅途     location / {         # 神态旅途         root            /Users/likai/nginx-website/kasir.cn;         # 默许首页文献         index index.html index.htm;     } 

    竖立完根目次后,咱们再来看下子目次的干系造访竖立,如下所示:

    location /chat-system {     # 神态旅途     alias           /Users/likai/nginx-website/chat-system/;         # 默许首页文献     index index.html index.htm;     # 管制网页刷新404     try_files $uri $uri/ /chat-system/index.html;  } 

    通过不雅察上述竖立后,咱们发现的不同点如下:

    alias 竖立子目次时,咱们使用了alias来指向神态 try_files 这里是管制vue神态启用history步地后,网页刷新404问题

    防御:若是你的vue神态是用Vue CLI搭建的,那么就需要修改vue.config.js中的publicPath属性值为:process.env.NODE_ENV === "development" ? "./" : "/chat-system"。"/chat-system"即为分娩环境的造访旅途,即是咱们刚才在location提醒行所竖立的。若是此处竖立诞妄的话,你打包后的vue神态在浏览器造访将使一派空缺??

    临了,在路由竖立文献中,传入参数:createWebHistory(process.env.BASE_URL)。

    具体代码请移步提交记载:build: 启用路由的history步地[5]

    自界说诞妄页

    在浏览器造访一个不存在的页面约略劳动器里面发生诞妄时,咱们可能需要对其进行处理,此时咱们就需要用到error_page提醒,如下所示:

    迷水商城
    # 自界说404与500页面,指向底下的location error_page 404 500 /404.html;  # 自界说404页面 location /404.html {     alias /Users/likai/nginx-website/404-page/;     # 默许首页文献     index index.html index.htm; } 

    防御:竖立了error_page后,一定要竖立location来指向你要造访的静态神态。

    反向代理tomcat提供的劳动

    咱们需要在location提醒里面使用proxy_pass来代理tomcat提供的劳动,竖立如下所示:

    # 反向代理Java接口,多旅途接纳正则抒发式匹配 location ~ ^/(api|uploads|download|other)/ {     proxy_pass http://127.0.0.1:8080;     proxy_set_header   Host    $host;     proxy_set_header   X-Real-IP   $remote_addr;      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for; } 

    防御:location提醒中使用正则进行了接口前缀地址的匹配,此处匹配的是/api/*、/uploads/*、/download/*、/other/*

    若是你的tomcat还提供了websocket劳动,那么还需要单独配一条location提醒,用来代理,竖立如下所示:

    # 反向代理websocket肯求 location /websocket {     proxy_pass http://127.0.0.1:8080/websocket/;     proxy_http_version 1.1;     proxy_set_header Upgrade $http_upgrade;     proxy_set_header Connection "upgrade"; } 

    若是你莫得使用Java来作念劳动端,而是使用python、php、c#等说话作念的,也不错使用proxy_pass来作念反向代理。

    重定向未捎带www的肯求

    临了,咱们来管制下本文起原所说的问题,在nginx中管制这个问题终点浮浅,咱们只需要判断下肯求地址中是否包含www即可,若是不包含则301重定向到带www的地址即可,竖立如下所示:

    # 主机称号,哪个写在前边,默许就跳转哪个 server_name     www.kaisir.cn kaisir.cn;  # 肯求网址中不包含www, 则重定向到捎带www的https地址 if ($http_host !~ "^www.kaisir.cn$") {     return 301 https://$server_name$request_uri; } 

    竖立完成后,咱们掀开浏览器造访kaisir.cn[6]来考证下是否达到了咱们的预期,如下图所示,完好管制??

    防御:上述竖立中,咱们使用正则抒发式对url进行了一波匹配,其中server_name提醒的作用是若是造访地址中包含此地点写的东西,就会触发推论这里的竖立。

    此竖立还会将你的http肯求默许重定向到https。

    完整的竖立文献

    本章节完整的竖立文献推行如下所示:

    server {     listen          80;     listen          443 ssl;     # 主机称号,哪个写在前边,默许就跳转哪个     server_name     www.kaisir.cn kaisir.cn;          # 肯求网址中不包含www, 则重定向到捎带www的https地址     if ($http_host !~ "^www.kaisir.cn$") {         return 301 https://$server_name$request_uri;     }          error_page 497 https://$server_name$request_uri;     # 自界说404与500页面,指向底下的location     error_page 404 500 /404.html;          # 竖立ssl文凭     ssl_certificate   /Users/likai/nginx-website/conf/kaisir.cn/1_kaisir.cn_bundle.crt;     ssl_certificate_key  /Users/likai/nginx-website/conf/kaisir.cn/2_kaisir.cn.key;     ssl_session_timeout 5m;     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;     ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;     ssl_prefer_server_ciphers on;          # 援用捏造竖立文献     include         vhosts/_nginx.vhost.fpm;     # 根旅途     location / {         # 神态旅途         root            /Users/likai/nginx-website/kasir.cn;         # 默许首页文献         index index.html index.htm;     }      location /chat-system {         # 神态旅途         alias           /Users/likai/nginx-website/chat-system/;         # 默许首页文献         index index.html index.htm;         # 管制网页刷新404         try_files $uri $uri/ /chat-system/index.html;      }          # 自界说404页面     location /404.html {         alias /Users/likai/nginx-website/404-page/;         # 默许首页文献         index index.html index.htm;     }               # 反向代理Java接口,多旅途接纳正则抒发式匹配     location ~ ^/(api|uploads|download|other)/ {         proxy_pass http://127.0.0.1:8080;         proxy_set_header   Host    $host;         proxy_set_header   X-Real-IP   $remote_addr;          proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;     }          # 反向代理websocket肯求     location /websocket {         proxy_pass http://127.0.0.1:8080/websocket/;         proxy_http_version 1.1;         proxy_set_header Upgrade $http_upgrade;         proxy_set_header Connection "upgrade";     }      } 
    nginx竖立文献

    接下来,咱们来看下nginx的竖立文献,作念一些小优化。本章节的系数竖立王人是在nginx.conf文献中完成,本章节提到的系数竖立文献均指nginx.conf。

    最大连合数

    最大连合数也不错成为并发数,即并吞技巧最多相沿些许个客户端接入,在竖立文献中加入如下所示的竖立:

    events {   # 允许的连合数   worker_connections  20000; } 
    开启gzip

    gzip压缩不错从简咱们的带宽资源,栽种网站的加载速率。它的开启形貌也很浮浅,在竖立文献的http提醒内添加,如下所示:

    http {     # 开启gzip     gzip  on;     # 允许压缩的最小字节数     gzip_min_length 10;     # IE浏览器1-6版块禁用gzip     gzip_disable "MSIE [1-6].";     # 启用gzip的文献类型     gzip_types text/plain application/x-javascript text/css text/javascript application/xml; } 
    竖立日记

    日记不错用来记载每个客户端的造访时候、ip、浏览器等信息,对咱们后续的网站珍爱带来匡助,在竖立文献的http提醒内添加如下所示的竖立:

    迷水商城
    # 诞诞辰记方法,添加客户端信得过ip等信息 format chatSystemLogFormat '$http_x forwarded_for - $remote_user [$time_local]'                '"$request" $status $body_bytes_sent'                '"$http_referer" "$http_user_agent"';    # 造访日记文献存放旅途 ss_log      /Users/likai/nginx-website/logs-chat-system/access.log chatSystemLogFormat buffer=32k; 
    竖立文献上传大小

    若是你的网站提供了文献上传劳动,那么文献的大小截至除了在你的劳动端神态中竖立外,还需要在nginx中竖立。

    迷水商城迷水商城

    相似的,在竖立文献的http提醒内添加如下所示的竖立:

    迷水商城
    # 客户端不错上传的文献大小 client_max_body_size 100m; 
    完整的竖立文献

    完整的竖立如下所示:

    user likai staff; worker_processes  8;  error_log  /Applications/MxSrvs/logs/errors_nginx.log; #error_log  logs/error.log  notice; #error_log  logs/error.log  info;  #pid        logs/nginx.pid;   events {     # 允许的连合数     worker_connections  20000; }   http {     # gzip匹配类型竖立文献     include       mime.types;     default_type  application/octet-stream;      # 客户端不错上传的文献大小     client_max_body_size 100m;     # 开启gzip     gzip  on;     # 允许压缩的最小字节数     gzip_min_length 10;     # IE浏览器1-6版块禁用gzip     gzip_disable "MSIE [1-6].";     # 启用gzip的文献类型     gzip_types text/plain application/x-javascript text/css text/javascript application/xml;      # 诞诞辰记方法,添加客户端信得过ip等信息     log_format chatSystemLogFormat '$http_x forwarded_for - $remote_user [$time_local]'                                    '"$request" $status $body_bytes_sent'                                    '"$http_referer" "$http_user_agent"';     # 造访日记文献存放旅途     access_log      /Users/likai/nginx-website/logs-chat-system/access.log chatSystemLogFormat buffer=32k;      # 引入劳动竖立文献     include virtualhost.conf;      sendfile        on;      keepalive_timeout  65;  } 
    参考而已

    [1]开源神态: https://kaisir.cn/chat-system

    [2]https://kaisir.cn/chat-system: https://kaisir.cn/chat-system

    [3]https://www.kaisir.cn/chat-system: https://www.kaisir.cn/chat-system

    [4]nginx官网: https://www.nginx.com/resources/wiki/start/topics/tutorials/install/

    [5]build: 启用路由的history步地: https://github.com/likaia/chat-system/commit/e7c55a714f2610a87a5c87d5864bc4c342a298b0

    [6]kaisir.cn: http://kaisir.cn

    [7]个东说念主网站: https://www.kaisir.cn/

     





Powered by 性药价钱, @2013-2022 RSS地图 HTML地图