开发者社区> 问答> 正文

红薯老大,给个nginx和Tomcat的配置撒 热:配置报错 

Apache+tomcat+ajp13(jk)用了好几年了,最近nginx频频在我眼皮下出现,起初不在意,总觉得肯定没apache好,但这几次运行了下感觉确实很快,所以想研究一下 我本机测试一直都是apache+php+svn+tomcat一起跑的,apache什么都管,遇到php把链接给php,遇到jsp把链接给tomcat,svn一般也不用,就是挂在那里。虽然没有cluster但是为了部署需要,在机器上也配置出来了session复制功能,这一跑就是100M没了。 看了oschina是基于nginx+tomcat的,所以想向您讨教engine x tomcat的配置,麻烦刚给大家说说吧。实在懒得看文档了。老大现身说法讲一讲让大家受教一下吧~~ 把配置贴出来不会影响网站代码、潜在风险什么的泄露吧~~

展开
收起
kun坤 2020-06-03 17:46:58 875 0
1 条回答
写回答
取消 提交回答
  • Nginx.conf : user  oschina; worker_processes  2;

    #error_log  logs/error.log; #error_log  logs/error.log  notice; #error_log  logs/error.log  info;

    #pid        logs/nginx.pid;

    events {     use epoll;     worker_connections  2048; }

    http {     include       mime.types;     default_type  application/octet-stream;

        #log_format  main  '$remote_addr - $remote_user [$time_local] $request '     #                  '"$status" $body_bytes_sent "$http_referer" '     #                  '"$http_user_agent" "$http_x_forwarded_for"';

        #access_log  off;     access_log  logs/access.log;

        client_header_timeout  3m;     client_body_timeout    3m;     send_timeout           3m;       client_header_buffer_size    1k;     large_client_header_buffers  4 4k;

        sendfile        on;     tcp_nopush      on;     tcp_nodelay     on;

        #keepalive_timeout  75 20;

        include    gzip.conf;    
        server {     listen 80;     server_name .oschina.net;     location / {         rewrite (.*) http://www.oschina.net$1 permanent;     }     }

        server {     listen 80;     server_name www.oschina.net my.oschina.net m.oschina.net;

            log_format  oschina_log         '$remote_addr - $remote_user [$time_local] $request '         '"$status" $body_bytes_sent "$http_referer" '         '"$http_user_agent" "$http_x_forwarded_for"';         access_log  logs/oschina.log;

        location ~ ^/(WEB-INF)/ {             deny all;         }

            location ~ .(apk|torrent|htm|html|asp|php|gif|jpg|jpeg|png|bmp|ico|rar|css|js|zip|java|jar|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ {             root /data/oschina/webapp;         access_log off;             expires 24h;         }        
        location ~ ^/uploads/ {         access_log off;             root /data/oschina/webapp;         expires 24h;         }

        location / {         proxy_pass http://localhost:8080;         include proxy.conf;     }

        error_page 502 503 /502.html;         error_page 404 /404.html;     error_page 403 /403.html;     } } gzip.conf: gzip              on; gzip_min_length      1000; gzip_types         text/plain text/css application/x-javascript; proxy.conf: 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; client_max_body_size    10m; client_body_buffer_size 128k; proxy_connect_timeout   300; proxy_send_timeout      300; proxy_read_timeout      300; proxy_buffer_size       4k; proxy_buffers           4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k;######rewrite (.*) http://www.oschina.net$1 permanent; 这句的意思,是不是访问 http://localhost:8080/oschina 这样的后端 url ,会重定下到 http://localhost/oschina ?######老大回帖真够快的。。。 感谢,正好配一下######engine X与 Tomcat通讯是用8080端口进行 代理proxy是吗? 正则那里还没怎么看懂,看来还得看看engine x的资料补习补习######我也发扬一下风格,这里是我对apache和tomcat的配置: httpd.conf

    LoadModule actions_module modules/mod_actions.so LoadModule alias_module modules/mod_alias.so LoadModule asis_module modules/mod_asis.so LoadModule auth_basic_module modules/mod_auth_basic.so #LoadModule auth_digest_module modules/mod_auth_digest.so #LoadModule authn_alias_module modules/mod_authn_alias.so #LoadModule authn_anon_module modules/mod_authn_anon.so #LoadModule authn_dbd_module modules/mod_authn_dbd.so #LoadModule authn_dbm_module modules/mod_authn_dbm.so LoadModule authn_default_module modules/mod_authn_default.so LoadModule authn_file_module modules/mod_authn_file.so #LoadModule authnz_ldap_module modules/mod_authnz_ldap.so #LoadModule authz_dbm_module modules/mod_authz_dbm.so LoadModule authz_default_module modules/mod_authz_default.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so LoadModule authz_host_module modules/mod_authz_host.so #LoadModule authz_owner_module modules/mod_authz_owner.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule autoindex_module modules/mod_autoindex.so #LoadModule cache_module modules/mod_cache.so #LoadModule cern_meta_module modules/mod_cern_meta.so LoadModule cgi_module modules/mod_cgi.so #LoadModule charset_lite_module modules/mod_charset_lite.so LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so #LoadModule dav_lock_module modules/mod_dav_lock.so #LoadModule dbd_module modules/mod_dbd.so #LoadModule deflate_module modules/mod_deflate.so LoadModule dir_module modules/mod_dir.so #LoadModule disk_cache_module modules/mod_disk_cache.so #LoadModule dumpio_module modules/mod_dumpio.so LoadModule env_module modules/mod_env.so #LoadModule expires_module modules/mod_expires.so #LoadModule ext_filter_module modules/mod_ext_filter.so #LoadModule file_cache_module modules/mod_file_cache.so #LoadModule filter_module modules/mod_filter.so #LoadModule headers_module modules/mod_headers.so #LoadModule ident_module modules/mod_ident.so #LoadModule imagemap_module modules/mod_imagemap.so LoadModule include_module modules/mod_include.so #LoadModule info_module modules/mod_info.so LoadModule isapi_module modules/mod_isapi.so #LoadModule ldap_module modules/mod_ldap.so #LoadModule logio_module modules/mod_logio.so LoadModule log_config_module modules/mod_log_config.so #LoadModule log_forensic_module modules/mod_log_forensic.so #LoadModule mem_cache_module modules/mod_mem_cache.so LoadModule mime_module modules/mod_mime.so #LoadModule mime_magic_module modules/mod_mime_magic.so LoadModule negotiation_module modules/mod_negotiation.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_connect_module modules/mod_proxy_connect.so #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule setenvif_module modules/mod_setenvif.so #LoadModule speling_module modules/mod_speling.so #LoadModule ssl_module modules/mod_ssl.so #LoadModule status_module modules/mod_status.so #LoadModule substitute_module modules/mod_substitute.so #LoadModule unique_id_module modules/mod_unique_id.so   //mod_security 共同打开(下边配置中已经打开) #LoadModule userdir_module modules/mod_userdir.so #LoadModule usertrack_module modules/mod_usertrack.so #LoadModule version_module modules/mod_version.so #LoadModule vhost_alias_module modules/mod_vhost_alias.so #SVN Module conf LoadModule dav_svn_module "D:/Serv/Subversion/bin/mod_dav_svn.so" LoadModule authz_svn_module "D:/Serv/Subversion/bin/mod_authz_svn.so" #PHP Module conf LoadModule php5_module "D:/Serv/Apache/PHP/php5apache2_2.dll" PHPIniDir "D:/Serv/Apache/PHP/" #mod_security conf 2.5.12 LoadModule security2_module modules/mod_security2/mod_security2.so LoadModule unique_id_module modules/mod_unique_id.so SecRuleEngine On SecDefaultAction log,auditlog,deny,status:403,phase:2,t:lowercase,t:replaceNulls,t:compressWhitespace SecAuditEngine RelevantOnly SecAuditLogType Serial SecAuditLog logs/mod_security2.log #jk Module conf LoadModule jk_module modules/mod_jk.so

    Where to find workers.properties

    JkWorkersFile conf/worker.properties JkMountFile conf/uriworkermap.properties

    Where to put jk logs

    JkLogFile logs/mod_jk.log

    Set the jk log level [debug/error/info]

    JkLogLevel info

    Select the log format

    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

    JkOptions indicate to send SSL KEY SIZE,

    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

    JkRequestLogFormat set the request format

    JkRequestLogFormat "%w %V %T" <IfModule !mpm_netware_module> <IfModule !mpm_winnt_module> ServerName localhost DocumentRoot "D:/Serv/wwwroot/"

    <Directory "D:/Serv/wwwroot/cache/status">     Order allow,deny     Deny from all     #allow from 127.0.0.1 </Directory>

    <Location /svn>         DAV svn         SVNPath "D:/Serv/svnroot/" </Location> 后面部分无关紧要的就不贴了。

    worker.properties的配置 #--- see following for detail   

    "http://tomcat.apache.org/connectors-doc/"  

    "http://tomcat.apache.org/connectors-doc/reference/workers.html"  

    #========server列表======== worker.list=controller,status #========controller,负载均衡控制器========  

    load-balance worker, can be "lb, status"

    worker.controller.type=lb worker.controller.balance_workers=tomcat1,tomcat2

    如何选择最优的worker, B[usyness]: 选最不忙的, R[equest]: 缺省

    worker.controller.method=B #ticky_session   sticky_session_force             含义

        true             false            SESSION会复制,有粘性

        true             true             SESSION不复制,有粘性

        false            false            SESSION会复制,无粘性

        false            true             SESSION会复制,无粘性

    注意 worker.controller.sticky_session=1,等同于worker.controller.sticky_session=true.此处指定集群是否需要会话复制,

    #如果设为true,则表明为会话粘性,不进行会话复制,当某用户的请求第一次分发到哪台Tomcat后,后继的请求会一直分发到此 #Tomcat服务器上处理;如果设为false,则表明需求会话复制。这就是说,如果你要想进行均衡负载,并在192.168.1.5和192.168.1.3 #两台机器的Tomcat实例上实现集群全局session复制,此处值要设置成false。 #sticky_session 1: True, otherwise False, 相同session id一直访问同一服务器    #sticky_session_force session id出错状态不返回500(Server Error), 由另一worker接手    worker.controller.sticky_session=0 worker.controller.sticky_session_force=0 #worker.status.type=status #========tomcat1========    worker.tomcat1.port=8009 worker.tomcat1.host=localhost worker.tomcat1.type=ajp13 worker.tomcat1.lbfactor=1 worker.tomcat1.socket_connect_timeout=3000 #========tomcat2======== #worker.tomcat2.port=8009 #worker.tomcat2.host=localhost #worker.tomcat2.type=ajp13 #worker.tomcat2.lbfactor=1 #worker.tomcat2.socket_connect_timeout=3000 worker.connection_pool_size=10 #默认值(connection_pool_size +1)/ 2 worker.connection_pool_minsize=5 worker.socket_timeout=1 worker.socket_connect_timeout=3000

    uriworkermap.properties配置,设置转发规则 /.jsp=controller /.do=controller /blog/=controller /bbs/=controller /site/=controller  !/.html=controller  !/.gif=controller  !/.jpg=controller  !/*.png=controller 

    extra/httpd-mpm.conf 模块   上边一样的就不贴了,主要是下边的配置,因为我用了mod_security模块,所以要做一些配置,这里不做解释了,写的很详细,我比较喜欢在配置文件里把容易忘记的地方写上文档。毕竟这东西配完了就不再动了,很容易忘记

    WinNT MPM

    ThreadsPerChild: constant number of worker threads in the server process

    MaxRequestsPerChild: maximum  number of requests a server process serves

    #注意:ThreadLimit指令应当放在ThreadsPerChild之前,否则ThreadsPerChild指令生效后ThreadLimit会失效,而导致不必要的错误 ThreadLimit必须大于等于ThreadsPerChild #对于mpm_winnt,ThreadLimit的默认值是1920;对于其他MPM这个值是64 #ThreadLimit 这个指令设置了每个子进程可配置的线程数ThreadsPerChild上限。任何在重启期间对这个指令的改变都将被忽略,但对ThreadsPerChild的修改却会生效。 #ThreadLimit 使用这个指令时要特别当心。如果将ThreadLimit设置成一个高出ThreadsPerChild实际需要很多的值,将会有过多的共享内存被分配。 #如果将ThreadLimit和ThreadsPerChild设置成超过系统的处理能力,Apache可能无法启动,或者系统将变得不稳定。该指令的值应当和ThreadsPerChild大致保持一致 #ThreadsPerChild 每个子进程建立的常驻的执行线程数。默认值是25。子进程在启动时建立这些线程后就不再建立新的线程了。 <IfModule mpm_winnt_module>     ThreadLimit            2000     ThreadsPerChild        2000     MaxRequestsPerChild    2000 </IfModule>

    ######当然由于日常使用windows的原因,因此apache的配置并不一定适合linux 这里是NT架构使用了线程,而linux一般都是使用进程。 以前研究过apache的文档,但老是看过以后就忘记了,用的时候还得继续看,比较恶心。######嘿, 因为 Nginx 就是 http 协议的反向代理, 所以不需要像 apache 那样还得来个 JK 如果是我那,就直接在 Nginx 上分辨, 是 PHP 就给 Apache, 是 jsp 就直接 tomcat 连 apache 的 JK 都省了。 但Session 粘贴问题的话,Nginx 的 第三方 session 功能好像暂时还是在测试阶段...除非只用 cookies 所以应用还得斟酌了.######受教了

    2020-06-04 11:06:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《Nginx 代理系统常用手册》 立即下载
CentOS Nginx PHP JAVA 多语言镜像使用手 立即下载
CentOS Nginx PHP JAVA多语言镜像使用手册 立即下载