Nginx Tomcat實現動靜分離

火星人 @ 2014-03-09 , reply:0
←手機掃碼閱讀

最近公司的項目都完成了,工作很清閑,處理每天的日常巡檢工作外,我還整理了一下以前學習的筆記,現在把我的筆記share給大家.

一、什麼是動靜分離

本文的動靜分離主要是通過nginx tomcat來實現,其中nginx處理圖片、html等靜態的文件,tomcat處理jsp、do等動態文件.

二、結構圖

三、安裝

1、安裝、配置nginx

下載nginx與pcre(如果需要使用正則,需要安裝pcre)

wget http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.8.46.tar.gz

wget http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-8.10.tar.gz

安裝pcre

  1. tar zxvf pcre-8.10.tar.gz
  2. cd pcre-8.10/
  3. ./configure
  4. make
  5. make install cd ..

安裝nginx

  1. tar zxvf nginx-0.8.46.tar.gz
  2. cd nginx-0.8.46/
  3. ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
  4. make
  5. make install

nginx.conf配置

  1. user www www;
  2. worker_processes 8;
  3. error_log /usr/local/nginx/logs/nginx_error.log crit;

  4. pid /usr/local/nginx/nginx.pid;
  5. worker_rlimit_nofile 65535;
  6. events
  7. {
  8. use epoll;
  9. worker_connections 65535;
  10. }
  11. http
  12. {
  13. include mime.types;
  14. default_type application/octet-stream;
  15. #charset gb2312;
  16. server_names_hash_bucket_size 128;
  17. client_header_buffer_size 32k;
  18. large_client_header_buffers 4 32k;
  19. client_max_body_size 8m;
  20. sendfile on;
  21. tcp_nopush on;
  22. keepalive_timeout 60;
  23. tcp_nodelay on;
  24. fastcgi_connect_timeout 300;
  25. fastcgi_send_timeout 300;
  26. fastcgi_read_timeout 300;
  27. fastcgi_buffer_size 64k;
  28. fastcgi_buffers 4 64k;
  29. fastcgi_busy_buffers_size 128k;
  30. fastcgi_temp_file_write_size 128k;
  31. gzip on;
  32. gzip_min_length 1k;
  33. gzip_buffers 4 16k;
  34. gzip_http_version 1.0;

  35. gzip_comp_level 2;
  36. gzip_types text/plain application/x-javascript text/css application/xml;
  37. gzip_vary on;
  38. #limit_zone crawler $binary_remote_addr 10m;
  39. server
  40. {
  41. listen 80;
  42. server_name test1.dl.com; ####test1.dl.com的ip為10.1.88.176
  43. index index.html index.htm index.php;
  44. root /usr/local/nginx/html;
  45. #limit_conn crawler 20;
  46. location ~ .*\.(php|php5)?$
  47. {
  48. #fastcgi_pass unix:/tmp/php-cgi.sock;
  49. fastcgi_pass 127.0.0.1:9000;
  50. fastcgi_index index.php;
  51. include fastcgi.conf;
  52. }
  53. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ ###所以的靜態文件人gif、jpg等都在本地打開,存放的目錄為/usr/local/nginx/html,保存時間為30天
  54. {
  55. root /usr/local/nginx/html;
  56. expires 30d;
  57. }
  58. location ~ (\.jsp)|(\.do)$ ###所以jsp、do的動態請求都交給後面的tomcat處理
  59. {
  60. proxy_pass http://10.1.88.168:8080;
  61. proxy_redirect off;

  62. proxy_set_header HOST $host;
  63. proxy_set_header X-Real-IP $remote_addr;
  64. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  65. client_max_body_size 10m;
  66. client_body_buffer_size 128k;
  67. proxy_connect_timeout 90;
  68. proxy_send_timeout 90;
  69. proxy_read_timeout 90;
  70. proxy_buffer_size 4k;
  71. proxy_buffers 4 32k;
  72. proxy_busy_buffers_size 64k;
  73. proxy_temp_file_write_size 64k;
  74. }
  75. location ~ .*\.(js|css)?$
  76. {
  77. expires 1h;
  78. }
  79. log_format access '$remote_addr - $remote_user [$time_local] "$request" '
  80. '$status $body_bytes_sent "$http_referer" '
  81. '"$http_user_agent" $http_x_forwarded_for';
  82. access_log /usr/local/nginx/logs/access.log access;
  83. }
  84. server
  85. {
  86. listen 80;
  87. server_name status.test1.dl.com;
  88. location / {
  89. stub_status on;
  90. access_log off;
  91. }
  92. }
  93. }

2、安裝、配置tomcat

先安裝jdk

  1. wget http://download.oracle.com/otn-pub/java/jdk/7u3-b04/jdk-7u3-linux-x64.rpm
  2. chmod 755 jdk-7u3-linux-x64.rpm
  3. rpm -ivh jdk-7u3-linux-x64.rpm
在/etc/profile里設置環境變數
  1. JAVA_HOME=/usr/java/jdk1.7.0
  2. CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
  3. PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
  4. export PATH CLASSPATH JAVA_HOME
然後在source /etc/profile使這個改變生效

安裝tomcat

  1. wget http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-7/v7.0.25/bin/apache-tomcat-7.0.25.tar.gz
  2. tar zxvf apache-tomcat-7.0.25.tar.gz
  3. cp -R apache-tomcat-7.0.25 /usr/local/tomcat

啟動tomcat

  1. /usr/local/tomcat/bin/startup.sh
之後打開http://localhost:8080就能看到tomcat的默認界面了 下面我們來修改tomcat的首頁 我在$tomcat/webapps/下建了個html目錄作為我網站的默認目錄,在html中有一個index.html文件,該文件要作為我網站的默認主頁. ,修改$tomcat/conf/server.xml文件.
在server.xml文件中,有一段如下:
  1. ……
  2. <engine name="Catalina"

    defaultHost="localhost">
  3. <host name="localhost" appBase="webapps"
  4. unpackWARs="true" autoDeploy="true"
  5. xmlValidation="false" xmlNamespaceAware="false">
  6. ……
  7. <host>
  8. </engine>
  9. ……

在<host></host>標籤之間添加上:

  1. <Context path="" docBase="html" debug="0"

    reloadable="true" />
path是說明虛擬目錄的名字,如果你要只輸入ip地址就顯示主頁,則該鍵值留為空;

docBase是虛擬目錄的路徑,它默認的是$tomcat/webapps/ROOT目錄,現在我在webapps目錄下建了一個html目錄,讓該目錄作為我的默認目錄.

debug和reloadable一般都分別設置成0和true.

然後,修改$tomcat/conf/web.xml文件.
在web.xml文件中,有一段如下:

  1. <welcome-file-list>
  2. <welcome-file>index.html</welcome-file>
  3. <welcome-file>index.htm</welcome-file>
  4. <welcome-file>index.jsp</welcome-file>
  5. </welcome-file-list>

在<welcome-file-list>與<welcome-file>index.html</welcome-file>之間添加上:

  1. <

    welcome-file>html</welcome-file>
修改完成之後,重啟tomcat即可看到index.html里的內容 tomcat伺服器的ip為10.1.88.168

在test4建立test.jsp、test1.do文本,內容如下

tomcat的首頁內容

test.jsp內容

test1.do內容

nginx的首頁內容

在nginx里查看動態請求

nginx處理test1.do

現在nginx tomcat就實現了動靜分離技術,如果大家還有什麼疑問,請聯繫我,我會及時的幫忙解答.

本文出自 「吟—技術交流」 博客,請務必保留此出處http://dl528888.blog.51cto.com/2382721/804596





[火星人 via ] Nginx Tomcat實現動靜分離已經有269次圍觀

http://www.coctec.com/docs/linux/show-post-47637.html