java web开发总结(三):linux下超越apache + tomcat的 nginx + tomcat负载均衡配置
2011-03-08 12:35
585 查看
关于nginx,不了解的请先阅读这里:http://wiki.nginx.org/Main,中文文档:http://wiki.nginx.org/NginxChs
这是最近比较流行的一个轻量级的web server,在我的同机压力测试实验中,响应能力是apache的3倍以上。功能比apache简单,小巧,最大并发连接能到3万。
对于nginx的使用,我也是近期才开始,使用的目的是在不增加硬件的条件下提升服务响应能力,以下配置适用环境:
linux + nginx0.7.64+ tomcat6
nginx同时是一个很强的反向代理server,可以用来跟tomcat做负载均衡集群,而且配置很简单,不过有个需要注意的地方:目前nginx跟后端server使用http1.0协议,不能keepalive,只能每次重新打开连接。需要关闭后端的keepalive,否则会产生大量后端的timewait状态的socket连接。
1 nginx代理tomcat关键配置代码如下:
Xml代码
server {
listen 80;
server_name YOUR_DOMAIN;
root /PATH/TO/YOUR/WEB/APPLICATION;
location / {
index.jsp;
}
location ~ ^/WEB-INF/* {#禁止访问被保护的目录
deny all;
}
location ~ /.do$ {
proxy_pass http://localhost:8080;#转发给tomcat端口,也可以是任何server。
proxy_set_header X-Real-IP $remote_addr;#转发客户端真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ /.jsp$ {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ ^/servlet/* {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
2 nginx负载均衡核心配置代码:
Xml代码
http {
upstream myproject {
server 127.0.0.1:8000 weight=3;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
}
server {
listen 80;
server_name www.domain.com;
location / {
proxy_pass http://myproject;#myproject 前面要加http://,否则异常
}
}
}
3 nginx+tomcat负载均衡简单配置:不用修改任何tomcat配置,只要tomcat开启http1.1协议端口(tomcat默认开启)
Xml代码
http {
upstream myproject {
server 127.0.0.1:8000 weight=3;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
}
server {
listen 80;
server_name www.domain.com;
root /PATH/TO/YOUR/WEB/APPLICATION;
location / {
index.jsp;
}
location ~ ^/WEB-INF/* {#禁止访问被保护的目录
deny all;
}
location ~ /.do$ {
proxy_pass http://myproject;#转发给tomcat端口,也可以是任何server。
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ /.jsp$ {
proxy_pass http://myproject;#myproject可以任意自定义,但是一定要在前面加http://
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ ^/servlets/* {
proxy_pass http://myproject;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
}
4 实际环境复杂配置:tomcat动态负载均衡 + 静态文件
Xml代码
worker_processes 8;
worker_rlimit_nofile 65535;
events {
use epoll;#开启epoll模式
worker_connections 65535;
}
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 logs/access.log main;
sendfile on;#linux下强大的静态文件发送功能,一定要开启
tcp_nopush on;
tcp_nodelay on;
#keepalive_timeout 0;
keepalive_timeout 5;
keepalive_requests 10;
server_names_hash_bucket_size 128;
client_header_timeout 10;
client_body_timeout 10;
send_timeout 10;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
client_max_body_size 8m;
gzip on;#开启gzip,节省带宽
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/xml;
output_buffers 1 32k;
postpone_output 1460;
limit_rate_after 3m;#限速模块,前3M下载时不限速
limit_rate 512k; #限速模块
upstream statproxy {#负载均衡模块,核心配置
server 127.0.0.1:8080;
server 127.0.0.1:8180;
}
server {#纯静态文件访问
listen 80;
server_name a.udomain.com;
index index.html index.php;
root /PATH/TO/YOUR/WEB/APPLICATIONA;
#charset koi8-r;
#access_log logs/host.access.log main;
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ ^/server-status/ {#服务器状态监控,可以通过:http://a.udomain.com/server-status/访问,需要在编译安装是添加此模块,默认不带。
stub_status on;
access_log off;
}
}
server {#动态负载均衡 + 动态静态分离
listen 80;
server_name b.udomain.com;
index index.html index.php;
root /PATH/TO/YOUR/WEB/APPLICATIONB;
error_page 500 502 503 504 /50x.html;
location ~ ^/WEB-INF/* {#禁止访问被保护的目录
deny all;
}
location ~ /.do$ {
proxy_pass http://statproxy;#经负载均衡模块转发
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ /.jsp$ {
proxy_pass http://statproxy;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ ^/servlet/* {
proxy_pass http://statproxy;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
server {#动态无负载均衡+静态访问
listen 80;
server_name c.udomain.com;
index index.html index.php;
root /PATH/TO/YOUR/WEB/APPLICATIONC;
#charset koi8-r;
#access_log logs/host.access.log main;
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ ^/WEB-INF/* {#禁止访问被保护的目录
deny all;
}
location ~ /.jsp$ {
proxy_pass http://localhost:8280;#直接转发
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ /.do$ {
proxy_pass http://localhost:8280;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ ^/servlet/* {
proxy_pass http://localhost:8280;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
}
5 tomcat端配置:
默认开启http1.1协议即可。建议使用NIO连接器。关于NIO,可以参考tomcat官方文档:http://tomcat.apache.org/tomcat-6.0-doc/config/http.html
注意问题:
nginx+tomcat下:
request.getRemoteAddr()会取不到正确的ip地址的,但是
proxy_set_header X-Real-IP $remote_addr;
这个配置把正确的ip地址放在了header里了,可以通过:
String ip = request.getHeader("X-Real-IP");
获取到正确的用户ip地址,当然这样会需要修改程序,的确不是个好的办法,不能适用所有场景。
参考文档:
nginx文档:http://wiki.nginx.org/Main,中文文档:http://wiki.nginx.org/NginxChs
nginx+tomcat配置示例:http://wiki.nginx.org/NginxJavaServers
nginx负载均衡配置示例:http://wiki.nginx.org/NginxLoadBalanceExample
tomcat nio配置参数文档:http://tomcat.apache.org/tomcat-6.0-doc/config/http.html
这是最近比较流行的一个轻量级的web server,在我的同机压力测试实验中,响应能力是apache的3倍以上。功能比apache简单,小巧,最大并发连接能到3万。
对于nginx的使用,我也是近期才开始,使用的目的是在不增加硬件的条件下提升服务响应能力,以下配置适用环境:
linux + nginx0.7.64+ tomcat6
nginx同时是一个很强的反向代理server,可以用来跟tomcat做负载均衡集群,而且配置很简单,不过有个需要注意的地方:目前nginx跟后端server使用http1.0协议,不能keepalive,只能每次重新打开连接。需要关闭后端的keepalive,否则会产生大量后端的timewait状态的socket连接。
1 nginx代理tomcat关键配置代码如下:
Xml代码
server {
listen 80;
server_name YOUR_DOMAIN;
root /PATH/TO/YOUR/WEB/APPLICATION;
location / {
index.jsp;
}
location ~ ^/WEB-INF/* {#禁止访问被保护的目录
deny all;
}
location ~ /.do$ {
proxy_pass http://localhost:8080;#转发给tomcat端口,也可以是任何server。
proxy_set_header X-Real-IP $remote_addr;#转发客户端真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ /.jsp$ {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ ^/servlet/* {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
server { listen 80; server_name YOUR_DOMAIN; root /PATH/TO/YOUR/WEB/APPLICATION; location / { index.jsp; } location ~ ^/WEB-INF/* {#禁止访问被保护的目录 deny all; } location ~ /.do$ { proxy_pass http://localhost:8080;#转发给tomcat端口,也可以是任何server。 proxy_set_header X-Real-IP $remote_addr;#转发客户端真实IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } location ~ /.jsp$ { proxy_pass http://localhost:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } location ~ ^/servlet/* { proxy_pass http://localhost:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } }
2 nginx负载均衡核心配置代码:
Xml代码
http {
upstream myproject {
server 127.0.0.1:8000 weight=3;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
}
server {
listen 80;
server_name www.domain.com;
location / {
proxy_pass http://myproject;#myproject 前面要加http://,否则异常
}
}
}
http { upstream myproject { server 127.0.0.1:8000 weight=3; server 127.0.0.1:8001; server 127.0.0.1:8002; server 127.0.0.1:8003; } server { listen 80; server_name www.domain.com; location / { proxy_pass http://myproject;#myproject 前面要加http://,否则异常 } } }
3 nginx+tomcat负载均衡简单配置:不用修改任何tomcat配置,只要tomcat开启http1.1协议端口(tomcat默认开启)
Xml代码
http {
upstream myproject {
server 127.0.0.1:8000 weight=3;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
}
server {
listen 80;
server_name www.domain.com;
root /PATH/TO/YOUR/WEB/APPLICATION;
location / {
index.jsp;
}
location ~ ^/WEB-INF/* {#禁止访问被保护的目录
deny all;
}
location ~ /.do$ {
proxy_pass http://myproject;#转发给tomcat端口,也可以是任何server。
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ /.jsp$ {
proxy_pass http://myproject;#myproject可以任意自定义,但是一定要在前面加http://
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ ^/servlets/* {
proxy_pass http://myproject;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
}
http { upstream myproject { server 127.0.0.1:8000 weight=3; server 127.0.0.1:8001; server 127.0.0.1:8002; server 127.0.0.1:8003; } server { listen 80; server_name www.domain.com; root /PATH/TO/YOUR/WEB/APPLICATION; location / { index.jsp; } location ~ ^/WEB-INF/* {#禁止访问被保护的目录 deny all; } location ~ /.do$ { proxy_pass http://myproject;#转发给tomcat端口,也可以是任何server。 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } location ~ /.jsp$ { proxy_pass http://myproject;#myproject可以任意自定义,但是一定要在前面加http:// proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } location ~ ^/servlets/* { proxy_pass http://myproject; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } } }
4 实际环境复杂配置:tomcat动态负载均衡 + 静态文件
Xml代码
worker_processes 8;
worker_rlimit_nofile 65535;
events {
use epoll;#开启epoll模式
worker_connections 65535;
}
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 logs/access.log main;
sendfile on;#linux下强大的静态文件发送功能,一定要开启
tcp_nopush on;
tcp_nodelay on;
#keepalive_timeout 0;
keepalive_timeout 5;
keepalive_requests 10;
server_names_hash_bucket_size 128;
client_header_timeout 10;
client_body_timeout 10;
send_timeout 10;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
client_max_body_size 8m;
gzip on;#开启gzip,节省带宽
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/xml;
output_buffers 1 32k;
postpone_output 1460;
limit_rate_after 3m;#限速模块,前3M下载时不限速
limit_rate 512k; #限速模块
upstream statproxy {#负载均衡模块,核心配置
server 127.0.0.1:8080;
server 127.0.0.1:8180;
}
server {#纯静态文件访问
listen 80;
server_name a.udomain.com;
index index.html index.php;
root /PATH/TO/YOUR/WEB/APPLICATIONA;
#charset koi8-r;
#access_log logs/host.access.log main;
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ ^/server-status/ {#服务器状态监控,可以通过:http://a.udomain.com/server-status/访问,需要在编译安装是添加此模块,默认不带。
stub_status on;
access_log off;
}
}
server {#动态负载均衡 + 动态静态分离
listen 80;
server_name b.udomain.com;
index index.html index.php;
root /PATH/TO/YOUR/WEB/APPLICATIONB;
error_page 500 502 503 504 /50x.html;
location ~ ^/WEB-INF/* {#禁止访问被保护的目录
deny all;
}
location ~ /.do$ {
proxy_pass http://statproxy;#经负载均衡模块转发
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ /.jsp$ {
proxy_pass http://statproxy;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ ^/servlet/* {
proxy_pass http://statproxy;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
server {#动态无负载均衡+静态访问
listen 80;
server_name c.udomain.com;
index index.html index.php;
root /PATH/TO/YOUR/WEB/APPLICATIONC;
#charset koi8-r;
#access_log logs/host.access.log main;
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ ^/WEB-INF/* {#禁止访问被保护的目录
deny all;
}
location ~ /.jsp$ {
proxy_pass http://localhost:8280;#直接转发
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ /.do$ {
proxy_pass http://localhost:8280;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ ^/servlet/* {
proxy_pass http://localhost:8280;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
}
worker_processes 8; worker_rlimit_nofile 65535; events { use epoll;#开启epoll模式 worker_connections 65535; } 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 logs/access.log main; sendfile on;#linux下强大的静态文件发送功能,一定要开启 tcp_nopush on; tcp_nodelay on; #keepalive_timeout 0; keepalive_timeout 5; keepalive_requests 10; server_names_hash_bucket_size 128; client_header_timeout 10; client_body_timeout 10; send_timeout 10; client_header_buffer_size 1k; large_client_header_buffers 4 4k; client_max_body_size 8m; gzip on;#开启gzip,节省带宽 gzip_min_length 1100; gzip_buffers 4 8k; gzip_types text/xml; output_buffers 1 32k; postpone_output 1460; limit_rate_after 3m;#限速模块,前3M下载时不限速 limit_rate 512k; #限速模块 upstream statproxy {#负载均衡模块,核心配置 server 127.0.0.1:8080; server 127.0.0.1:8180; } server {#纯静态文件访问 listen 80; server_name a.udomain.com; index index.html index.php; root /PATH/TO/YOUR/WEB/APPLICATIONA; #charset koi8-r; #access_log logs/host.access.log main; #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ ^/server-status/ {#服务器状态监控,可以通过:http://a.udomain.com/server-status/访问,需要在编译安装是添加此模块,默认不带。 stub_status on; access_log off; } } server {#动态负载均衡 + 动态静态分离 listen 80; server_name b.udomain.com; index index.html index.php; root /PATH/TO/YOUR/WEB/APPLICATIONB; error_page 500 502 503 504 /50x.html; location ~ ^/WEB-INF/* {#禁止访问被保护的目录 deny all; } location ~ /.do$ { proxy_pass http://statproxy;#经负载均衡模块转发 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } location ~ /.jsp$ { proxy_pass http://statproxy; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } location ~ ^/servlet/* { proxy_pass http://statproxy; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } } server {#动态无负载均衡+静态访问 listen 80; server_name c.udomain.com; index index.html index.php; root /PATH/TO/YOUR/WEB/APPLICATIONC; #charset koi8-r; #access_log logs/host.access.log main; #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ ^/WEB-INF/* {#禁止访问被保护的目录 deny all; } location ~ /.jsp$ { proxy_pass http://localhost:8280;#直接转发 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } location ~ /.do$ { proxy_pass http://localhost:8280; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } location ~ ^/servlet/* { proxy_pass http://localhost:8280; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } } }
5 tomcat端配置:
默认开启http1.1协议即可。建议使用NIO连接器。关于NIO,可以参考tomcat官方文档:http://tomcat.apache.org/tomcat-6.0-doc/config/http.html
注意问题:
nginx+tomcat下:
request.getRemoteAddr()会取不到正确的ip地址的,但是
proxy_set_header X-Real-IP $remote_addr;
这个配置把正确的ip地址放在了header里了,可以通过:
String ip = request.getHeader("X-Real-IP");
获取到正确的用户ip地址,当然这样会需要修改程序,的确不是个好的办法,不能适用所有场景。
参考文档:
nginx文档:http://wiki.nginx.org/Main,中文文档:http://wiki.nginx.org/NginxChs
nginx+tomcat配置示例:http://wiki.nginx.org/NginxJavaServers
nginx负载均衡配置示例:http://wiki.nginx.org/NginxLoadBalanceExample
tomcat nio配置参数文档:http://tomcat.apache.org/tomcat-6.0-doc/config/http.html
相关文章推荐
- java web开发总结(二):linux + apache2.2(prefork模式) + jk1.2.26 + tomcat6负载均衡配置优化
- java web开发总结(二):linux + apache2.2(prefork模式) + jk1.2.26 + tomcat6负载均衡配置优化
- Linux中Java的web项目开发环境配置(JDK1.7+Tomcat7+Mysql5.5+eclipse)
- JavaWeb开发环境搭建Eclipse配置Tomcat
- TOMCAT的目录结构 1++ Tomact的一些小配置2++Java Web开发: Tomcat中部署项目的三种方法
- Java Web开发中Sping的总结和SSH配置
- Intellij IDEA 配置 JavaWeb开发环境(Tomcat 配置)
- 在服务器搭建javaweb开发环境--安装配置eclips和tomcat
- windows + myeclipse 调试 linux + tomcat 的java web服务 配置方式
- JavaWeb开发知识总结(tomcat)
- java web开发总结(四):apache自带压力测试小工具ab(apache benchmark)
- 最近在Ubuntu9.04下用tomcat发布一个用java开发的WEB项目(tomcat6+mysql)。在windows下编码完全没问题,到了linux下后,到处一大堆得乱码(主要是针对中文)。上
- 开发模式配置,不用每次重启tomcat,java web基础
- Java Web 回顾总结(二) - Tomcat 配置
- linux下配置web服务器Apache-Tomcat
- java Web开发中,Tomcat安装顺序与配置(windows7系统下)
- linux(centos) java+apache+tomcat配置
- Linux下jsp开发环境,apache,tomcat服务器配置过程:
- linux下超越apache + tomcat的 nginx + tomcat负载均衡配置
- 软件开发工程师(JAVA)中级考试大纲之--五 J2EE WEB高级组件开发--(三)Tomcat服务器的环境及配置;应用发布和数据源配置;