Nginx配置解析

434 阅读2分钟

Nginx配置多服务共享80端口,实现转发代理

描述

访问 http://127.0.0.1/index.html 页面时,就会被代理转发到其它(9999)端口页面。虽然访问的是80端口,但其实被代理到其他(9999)端口,访问index页面。

向tomcat服务发送http请求时,在url路径后面携带/api时,就会被映射到127.0.0.1:8888的发送ajax请求服务后端,获取到后台数据。

比如,发送http://127.0.0.1/api/user请求时,最后会被代理到http://127.0.0.1:8888/user其端口会被隐藏。

配置

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


	sendfile        on;
	#tcp_nopush     on;

	#keepalive_timeout  0;
	keepalive_timeout  65;



	# springboot服务端口
	upstream mylocal {
		server 127.0.0.1:8888;
	}


	# 监听80端口
	server {
		listen       80;
		server_name  127.0.0.1;

		charset utf-8;

		# 服务器fttp请求
		location /api {
			proxy_pass http://mylocal;
		}

		# web页面,实现转发代理到9999端口
		location / {
			proxy_pass http://127.0.0.1:9999/;
		}
  
	}


	# 监听9999端口
	server {
		listen       9999;
		server_name  127.0.0.1;
		
		location / {
			root   	html;
			index  	index.html index.htm;
		}

	}


}

Nginx提高加载静态文件速度

开启gzip压缩

http {
  # 开启gzip
  gzip  on;

  # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
  gzip_min_length 1k;

  # gzip 压缩级别,1-10,数字越大压缩的越好,也越占用CPU时间。一般设置1和2
  gzip_comp_level 2;

  # 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
  gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;

  # 是否在http header中添加Vary: Accept-Encoding,建议开启
  gzip_vary on;

  # 禁用IE 6 gzip
  gzip_disable "MSIE [1-6]\.";

  # 设置缓存路径并且使用一块最大100M的共享内存,用于硬盘上的文件索引,包括文件名和请求次数,每个文件在1天内若不活跃(无请求)则从硬盘上淘汰,硬盘缓存最大10G,满了则根据LRU算法自动清除缓存。
  proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=imgcache:100m inactive=1d max_size=10g;
}

开启缓存

http {

  server{
    location ~* ^.+\.(css|js|ico|gif|jpg|jpeg|png)$ {
      log_not_found off;
      # 关闭日志
      access_log off;

      # 缓存时间7天
      expires 7d;

      # 源服务器
      proxy_pass http://localhost:8888;

      # 指定上面设置的缓存区域
      proxy_cache imgcache;

      # 缓存过期管理
      proxy_cache_valid 200 302 1d;
      proxy_cache_valid 404 10m;
      proxy_cache_valid any 1h;
      proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
    }
  }

}

Nginx配置SSL证书实现https访问

描述

数字证书是一种认证机制。简单点说,它代表了一种由权威机构颁发授权的安全标志。 比传统网站采用HTTP协议进行明文数据传输,更为安全。 一份 SSL 证书包括一个公共密钥和一个私用密钥。公共密钥用于加密信息,私用密钥用于解译加密的信息。 SSL的工作原理中包含如下三个协议。 握手协议(Handshake protocol) 记录协议(Record protocol) 警报协议(Alert protocol)。

配置SSL证书

在阿里下载好nginx相关的证书(证书一般是pem文件和key文件,名字随意取)。 件证书上传到服务器中,存放到nginx文件下,后面需使用到。

注意:在下载证书时,应该对域名进行备案,下载免费证书

Nginx的SSL模块下载

在配置SSL证书之前,要确保Nginx已经安装了SSL模块。检查是否存在SSL模块,进入到Nginx目标下,输入:sbin/nginx -V

image123.jpg

如果出现 (configure arguments: --with-http_ssl_module), 则已安装。

nginx.conf的配置

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
	
	server {
		listen 80;
		server_name citycode.top www.citycode.top; 
		# 将请求转成https
		rewrite ^(.*)$ https://$host$1 permanent;
	}
	
	server {
		#监听443端口
		listen 443;
		#你的域名
		server_name citycode.top www.citycode.top; 
		ssl on;
		# ssl证书的pem文件路径
		ssl_certificate  	/card/20210803.pem;
		# ssl证书的key文件路径
		ssl_certificate_key     /card/20210803.key;
		location / {
			root html;
			index index.html index.hml;
		}
	}
	
}

注意事项

  • 443端口的防火墙需要关闭
  • 443端口安全组开放
  • ssl证书未过期
  • 网站和域名进行备案
  • 使用域名访问
  • 443端口未被占用