读作「engine X」,N GIN X

http 服务器,邮件服务器,可以作为反向代理:(所谓前向代理,例如魔力上网,你访问网址 A,代理服务器代替你向网址 A 发出网络请求,再将此请求发送回给你,网址 A 知道代理服务器的地址而不知道你的地址,实现了匿名效果;而反向代理,你访问网址 A,网址 A 将内容发给此服务器,此服务器再将内容呈现给你,你知道代理服务器的地址,而不知道你实际访问内容的地址,CDN 就是反向代理的例子)

安装和安装位置

环境是 Ubuntu:

  • apt install nginx
  • 安装位置是 /usr/bin/nginx,配置文件目录/etc/nginx/
  • 默认配置文件,/etc/nginx/nginx.conf ,使用nginx -t可以看到
  • 服务器的文件目录:
    • 配置文件目录:sites-avaliable/;conf.d/
    • 网页文件:var/www
    • 默认网页文件目录:/usr/share/nginx/html;即每次安装好显示的 Welcome to Nginx 页面

命令

nginx -s quit #关闭服务,Web 服务器会关闭,强制关闭是 nginx -s stop
nginx -s reload #重载配置
nginx -c filepath #使用 filepath 来作为配置文件
nginx -t #测试配置文件运行 相当于 whatif

或者是:

sudo systemctl nginx start
sudo systemctl nginx stop
sudo systemctl nginx restart

配置文件

配置文件生成:https://ssl-config.mozilla.org/

Site-available 与 site-enabled

sites-enabled 目录中存放的是链接文件,每个链接文件都指向 sites-available 目录中的配置文件,表示需要让 Nginx 启用哪些配置代理文件。在 sites-enabled 下创建 symbol link 链接 sites-available 下的配置文件就可以启用代理配置。

在 site-enabled下(cd 进入)ln -s /etc/nginx/sites-available/A linkfilename启用

HTTP 配置(80)

  • 在 site-available 或 conf.d 中新建一文件,修改此文件:vim /etc/nginx/sites-available/setting
# 丢弃缺乏 Host 头的请求
server {
       listen 80;
       return 444;
}
# 80 端口设置
server {
       listen 80;
       listen [::]:80; #ipv6
       server_name example.com www.example.com;

       # 定义服务器的默认网站根目录位置
       root /var/www/example/;
	   # 网站首页解析文件的名字
		index index.html index.htm index.nginx-debian.html;

HTTPS 设置(443)

# 默认服务器,丢弃缺乏 Host 头的请求
server {
       listen 80;
       return 444;
}

server {
        listen 80;
        listen [::]:80;
        sever_name example.com www.example.com;

        rewrite ^(.*)$ https://$host$1 permanent;  ## http 向 https 端口转发,301 重定向
}

server {
    	listen 443;
   		listen [::]:443;
 		server_name example.com www.example.com;
		
		 root /var/www/example/;    # 为虚拟服务器指明文档的根目录
    	 index index.html index.htm; # 给定URL文件
		 
		 ##
    	 # 部署 HTTP 严格传输安全(HSTS)
   		 ##
		 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload;"
		
		  gzip off; #https 必须关闭 gizp
		  
		  # SSL configuration
			ssl on;
    		ssl_certificate   cert/certfile.pem;    # 证书
    		ssl_certificate_key  cert/certfile.key; # 私钥
    		ssl_session_timeout 5m; # 设置超时时间
			# 密码套件配置
    		# 密码套件名称构成:密钥交换-身份验证-加密算法(算法-强度-模式)-MAC或PRF
    		ssl_ciphers ECDHE-RSA-AES128-GCM- 			SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
   			ssl_protocols TLSv1.2; # 设置 SSL/TSL 协议版本号
    		ssl_prefer_server_ciphers on; # 控制密码套件优先级,让服务器选择要使用的算法套件
    		ssl_buffer_size 1400; # 减少TLS缓冲区大小,可以显著减少首字节时间(《HTTPS权威指南》P416

外部资料

  1. 简书:Nginx 配置
  2. Wikipedia:Nginx
  3. Nginx:官网