nginx+tomcat反向代理,及http2使用

一、下载安装

 资源网址:http://nginx.org/en/download.html

下载安装参考链接:

https://www.cnblogs.com/jimisun/p/8057156.html

https://www.cnblogs.com/hanyinglong/p/5102141.html

1、在服务器文件下(最好直接在/usr/local下面安装nginx比较好,不然有坑啊),执行下载命令wget http://nginx.org/download/nginx-1.13.8.tar.gz

2、tar -xvzf nginx-1.13.7.tar.g 解压

3、Nginx的安装依赖于以下三个包,意思就是在安装Nginx之前首先必须安装一下的三个包,安装顺序为我写的顺序:

a、 SSL功能需要openssl库,下载地址:http://www.openssl.org/

b、gzip模块需要zlib库,下载地址:http://www.zlib.net/ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

c、rewrite模块需要pcre库,下载地址:http://www.pcre.org/

下载后放入服务器解压。

4、进入nginx文件夹执行命令:./configure --with-openssl=/usr/java/openssl--with-zlib=/usr/java/zlib --with-pcre=/usr/java/pcre --with-http_v2_module--with-http_ssl_module --with-http_mp4_module --with-ipv6 --with-stream  --with-stream_ssl_module --with-file-aio--with-threads --with-debug

后面几个with可以视情况不要

5、执行命令;make

       若报错:error: You need a C++ compiler for C++ support

       执行命令:yum install -y gcc gcc-c++

6、执行命令:make install

7、检查安装是否成功

执行命令1:cd /usr/local/nginx/sbin/

执行命令2: ./nginx -t

显示如下图表明成功。

8、可以把/usr/local/nginx下面的sbin复制到自定义的安装目录(sbin下启动脚本)

但是日志、缓存等一些文件还是在/usr/local/nginx目录下(这里就体现部分坑了)

自定义目录启动会遇到权限问题:Permissiondenied,执行命令:chmod -R 777 sbin/nginx

//启动命令--安装路径下的/nginx/sbin/nginx
//停止命令--路径下的/nginx/sbin/nginx -s stop或者 : nginx -s quit
//重启命令--路径下的/nginx/sbin/nginx -s reload
//查看进程命令--ps -ef | grep nginx
//平滑重启--ll -HUP Nginx主进程号/
查看nginx启动状况命令:ps aux | grep nginx


9、执行命令:./nginx #启动直到没有报错,才算启动完成

10、nginx默认端口为80,开启端口权限,避免端口冲突。

 

二、反向代理及http2配置

1、修改tomcat server.xml文件(除端口号其它用server.xml默认的就行)

                            proxyName="aurorascm.de"proxyPort="443" scheme="https" secure="true"/>

2、配置nginx.cnf文件

nginx https 反向代理 tomcat的二种方法参考链接:http://blog.51yip.com/apachenginx/1877.html

下面代码只有ngnix配置了ssl,tomcat并没有配置,如果tomcat也配置了ssl,那么proxy_pass  http://0.0.0.0:8080要变为

proxy_pass  https://0.0.0.0:8080

 

#运行用户 
#user  nobody;
#启动进程,通常设置成和cpu内核的数量相等
worker_processes  8;

#全局错误日志及PID文件
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

#工作模式及连接数上限
events {
	#epoll是多路复用IO(I/O Multiplexing)中的一种方式,  
    #仅用于linux2.6以上内核,可以大大提高nginx的性能
	use   epoll;
	#单个后台worker process进程的最大并发链接数
    worker_connections  1024;
	
	# 并发总数是 worker_processes 和 worker_connections 的乘积(一般根据经验除以4)  
    # 即 max_clients = worker_processes * worker_connections/4
}


http {
    include       mime.types;
    default_type  application/octet-stream;
	charset utf-8;
	#设定日志格式
    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 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,  
    #对于普通应用,必须设为 on,  
    #如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,  
    #以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    #tcp_nopush     on;

	#连接超时时间
    #keepalive_timeout  0;
    keepalive_timeout  65;

	#开启gzip压缩
    gzip  on;
	gzip_disable "MSIE [1-6].";

	#设定请求缓冲
	client_header_buffer_size    128k;
    large_client_header_buffers  4 128k;
	
	#若需负载均衡请在此处配置集群
	#upstream  domainName.com {  #服务器集群名字  
    #    server    127.0.0.1:8090  weight=1;#服务器配置   #weight是权重的意思,权重越大,分配的概率越大。  
    #    server    127.0.0.1:8100  weight=2;  
    #}
	
    #server {
    #    listen       80;
    #    server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

    #    location / {
    #        root   html;
    #       index  index.jsp index.html index.htm;
    #    }

        #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;
    #    }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    #}


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    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   html;
    #        index  index.html index.htm;
    #    }
    #}
	
	
	# 888 new add aurorascm.de(shop) https/http2  
	server {
		listen 80;
		server_name  aurorascm.de;
		if ($scheme ~ http) {
			return https://www.aurorascm.de:443$request_uri;
		}
	}
    server {
        listen       443 ssl http2 default_server;
        server_name  aurorascm.de;

        ssl_certificate      /usr/java/nginx/cert/de.pem;
        ssl_certificate_key  /usr/java/nginx/cert/de.key;
		ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_session_cache    shared:SSL:20m;
        ssl_session_timeout  60m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
		
        location / {
			proxy_pass  http://0.0.0.0: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;
			expires  3d;
        }
		
		#静态文件,nginx处理  
        location ~ ^/(js|css|flash|media|jpg|png|gif|mp4)/ {
            expires 1d;
        }					
    }
	
	# 888 new add aurorascm.eu(admin) http
	server {
	
        listen       80;
        server_name  aurorascm.eu;
		
        location / {
			proxy_pass  http://0.0.0.0:8081;
			proxy_set_header Host      $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			expires  3d;
        }
		
		#静态文件,nginx处理  
        location ~ ^/(js|css|flash|media|jpg|png|gif)/ {
            expires 1d;
        }					
    }

}

3、验证HTTP2是否已启用

使用高版本的Chrome,按照如下步骤操作

第一步:使用Chrome访问启用http2的站点,比如环境为https://192.168.0.107:8443。

第二步:新开TAB页,在地址栏中输入chrome://net-internals/#http2,检查HTTP/2 sessions下的表格。

第三步:确认表格里是否出现了上一步访问的主机地址,比如192.168.0.107:8443

三、后续补充

1、nginx卸载

想卸载直接把编译产生的文件删除就可以。

2、nginx添加其它组件

第一步:若是第三方组件,先下载,后 ./configure中添加此项就可以,其它已有的也不能少哦,--add-module=/usr/local/nginx-module/cache-purge;若是nginx自身的./configure中--with-http_stub_status_module就可以。

第二步:make下就可以了。不用make install ,这会覆盖原先的。

3、要想更改安装目录。

./configure 后加入此项就可以 --prefix=/path

4、要优化重点在缓存上,但还没搞好,再续。


你可能感兴趣的:(LearningRecord)