Nginx+Tomcat+Https 服務器負載均衡配置

這篇過氣了!javascript

從新補一個:http://www.cnblogs.com/hackyo/p/6809773.htmlcss

 

因爲須要,得搭建個nginx+tomcat+https的服務器,搜了搜網上的發現老是有錯,如今整理了些有用的,備忘。html

環境:Centos6.五、JDK1.八、Tomcat8.五、Nginx1.10.2
準備材料:
1.JDK1.8安裝包jdk-8u131-linux-x64.tar.gzjava

下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.htmllinux

2.Tomcat8安裝包apache-tomcat-8.5.14.tar.gznginx

下載地址:http://tomcat.apache.org/download-80.cgiweb

3.Nginx1.10.2安裝包nginx-1.10.2.tar.gzapache

下載地址:http://nginx.org/en/download.htmltomcat

 

一、JDK安裝配置
解壓並安裝到/usr/local/jdk安全

[root@localhost ~]# tar zxvf jdk-8u131-linux-x64.tar.gz
[root@localhost ~]# mv jdk1.8.0_131 /usr/local/jdk

配置JDK環境變量

[root@localhost ~]# vi /etc/profile

在底部加入如下內容

JAVA_HOME=/usr/local/jdk
JRE_HOME=$JAVA_HOME/jre
CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export JAVA_HOME JRE_HOME PATH CLASSPATH

應用環境變量

[root@localhost ~]# source /etc/profile

檢測是否成功,顯示版本說明成功

[root@localhost ~]# java -version

二、Tomcat安裝配置
解壓並安裝到/usr/local/tomcat

[root@localhost ~]# tar zxvf apache-tomcat-8.5.14.tar.gz
[root@localhost ~]# mv apache-tomcat-8.5.14 /usr/local/tomcat

默認tomcat是root身份運行的,這樣不安全,這裏設置普通用戶運行

[root@localhost ~]# groupadd tomcat
[root@localhost ~]# useradd -g tomcat tomcat
[root@localhost ~]# passwd tomcat
[root@localhost ~]# chown tomcat.tomcat -R /usr/local/tomcat

編輯Tomcat配置文件,開啓https服務

[root@localhost ~]# vi /usr/local/tomcat/conf/server.xml

找到這行

    <!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
    -->

修改成

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/cert.jks"
                         certificateKeystorePassword="此處修改成證書密碼"
                         certificateKeyAlias="此處修改成證書別名"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>

證書可自制,也能夠免費申請到。

通常須要將證書轉換爲jks格式,可經過這裏來在線轉換https://www.chinassl.net/ssltools/convert-ssl.html

其中certificateKeystoreFile爲證書文件的路徑,certificateKeystorePassword爲證書密碼

certificateKeyAlias爲證書別名,可以使用JDK自帶的工具查看,命令行:keytool -list -v -keystore mykey.jks -storepass mypassword

保存文件並退出

這樣一來https就能夠訪問了,可是https並非強制使用,因此還要繼續設置

編輯Tomcat配置文件,強制使用https

[root@localhost ~]# vi /usr/local/tomcat/conf/web.xml

在最後的</welcome-file-list>後面加上下面的代碼

    <login-config>  
        <auth-method>CLIENT-CERT</auth-method>  
        <realm-name>Client Cert Users-only Area</realm-name>  
    </login-config>  
    <security-constraint>  
        <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>

這樣Tomcat的https便配置成功。

此時能夠啓動Tomcat服務器,而且訪問8080端口已經能夠看到小貓了。

[root@localhost ~]# /usr/local/tomcat/bin/startup.sh

二、Nginx安裝配置

配置Nginx用戶

[root@localhost ~]# groupadd nginx
[root@localhost ~]# useradd -g nginx -s /sbin/nologin nginx

升級系統,並安裝依賴包

[root@localhost ~]# yum -y update
[root@localhost ~]# yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc

解壓並進入文件夾

[root@localhost ~]# tar zxvf nginx-1.10.2.tar.gz
[root@localhost ~]# cd nginx-1.10.2

配置安裝

[root@localhost nginx-1.10.2]# ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module
[root@localhost nginx-1.10.2]# make && make install

配置Nginx

[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf

這一步須要手動將ssl證書放入/usr/local/nginx/conf/目錄下,分別爲cert.crt和cert.key文件

證書可自制,也能夠免費申請到。

若是申請到證書爲其餘格式,可經過這裏來在線轉換https://www.chinassl.net/ssltools/convert-ssl.html

nginx主配置文件

user nginx nginx;
worker_processes 2;
error_log logs/error.log;
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 logs/access.log main;

    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 90;
    proxy_send_timeout 90;
    proxy_read_timeout 90;
    proxy_buffer_size 4k;
    proxy_buffers 6 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;

    sendfile on;
    keepalive_timeout 65;
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascripttext/css application/xml;
    gzip_vary on;

    server {
        listen 80;
        server_name www.xxx.cn xxx.cn;
        return 301 https://$server_name$request_uri;
    }

    server {
        listen 443 ssl;
        server_name www.xxx.cn xxx.cn;
        ssl_certificate cert.crt;
        ssl_certificate_key cert.key;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 5m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        location / {
            root /usr/local/tomcat/webapps/ROOT;
            index index.html index.jsp index.htm;
        }
        location ~ .*.(jsp|servlet)$ {
            index index.html index.jsp index.htm;
            proxy_pass https://127.0.0.1:8443;
        }
        location /nginxstatus {
            stub_status on;
            access_log on;
            auth_basic "nginxstatus";
            auth_basic_user_file /usr/local/nagois/etc/htpasswd.users;
        }
        error_page 400 404 414 500 502 503 504 /Error.html;
    }
}

最後啓動Nginx服務器

[root@localhost ~]# /usr/local/nginx/sbin/nginx
相關文章
相關標籤/搜索