nginx 學習記錄:IP+端口號配置網站、隱藏端口號、自簽名證書配置Https、強制Https、自定義404

幾點心得

1. 若是沒有顯式聲明 default server 則第一個 server 會被隱式的設爲 default server
1. 443後面必定要加ssl,否則http會被重定向到https
1. 靜態資源在上游服務器上,而不是當前nginx直接提供

學習環境

VisualBox 虛擬機 ubuntu 16.04 (網址:192.168.1.162)
經過 sudo apt install nginx 安裝 nginx

學習建議

全部的實例裏面都是將 80 和 443 端口在同一個 Server {...} 完成的
開始時很差理解,乾脆所有拆開,一個 Server {...} 裏面只 listen 一個端口
開始時所有在 default 裏面配置,熟練以後,再拆分獨立到一個一個的網站配置

** 其實我開始時不是以上這樣子的,都是按照通行的辦法開始的
** 由於我發現同事配置網站全都刪除了default
** 對於 defult 的理解不到位,才使得我用了以上笨辦法,

一、IP+端口號配置網站

和普通配置實際上是同樣的,只是 Listen 的端口號不是 80 和 443

二、自簽名證書配置Https

自簽名證書製做不在這裏介紹
配置自簽名證書和通用證書方式實際上是同樣的

三、強制 https

參考:

http://www.javashuo.com/article/p-beayftbk-ct.html 這裏有很詳細的介紹,我選擇了第一種:rewrite方法php

四、隱藏端口號

經過 proxy_pass 反向代理,將域名配置的網站直接指向以前使用 ip + 端口號 配置的網站

	server_name_in_redirect off;
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    location / {
             proxy_pass http://192.168.1.162:8001/;
    }

五、自定義 404 頁面

參考

https://www.cnblogs.com/paul8339/p/7389422.htmlhtml

如今沒有加上 php,因此使用方法一

error_page  404  /404.html;
  
location = /404.html {
	root   /var/www/html;
}

網站配置清單

http://192.168.1.162/
https://192.168.1.162/

http://192.168.1.162:8001/
https://192.168.1.162:4001/

http://test1621.wzh
https://test1621.wzh

這纔是最終目的	
http://test1621.wzh 會轉向 http://192.168.1.162:8001/
httpss://test1621.wzh 會轉向 http://192.168.1.162:4001/
若是也須要強制https 能夠按照 http://192.168.1.162/ 加到這個域名網站配置

完整學習的配置文件 (都在一個 default 裏面)

server {
    listen 80  ; # default_server;
    # listen [::]:80 ; #  default_server;

    # SSL configuration
    #  listen 443 ssl ; # default_server;
    #  listen [::]:443  ssl ; #  default_server;

    #  ssl on;
    #  ssl_certificate  /var/www/cert2019/wyserver.crt;
    #  ssl_certificate_key  /var/www/cert2019/wyserver.key;
    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    # add by wzh 20190126 強制https
    rewrite ^(.*)$  https://$host$request_uri$1 permanent;

    location / {
            try_files $uri $uri/ =404;
    }

    	error_page  404  /404.html;

			location = /404.html {
			root   /var/www/html;
	}
	
}

server {
    # SSL configuration
     listen 443 ssl ; # default_server;
    #  listen [::]:443  ssl ; #  default_server;

     ssl on;
     ssl_certificate  /var/www/cert2019/wyserver.crt;
     ssl_certificate_key  /var/www/cert2019/wyserver.key;
    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
            try_files $uri $uri/ =404;
    }
	
		error_page  404  /404.html;
  
	location = /404.html {
		root   /var/www/html;
	}

}
# Virtual Host configuration for example.com
server {
    listen 8001 ;
    # listen [::]:8001 ;

    server_name 192.168.1.162;

    # add by wzh 20190126 強制https
    rewrite ^(.*)$  https://192.168.1.16:4001  permanent;

    root /var/www/test123;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;
}

###############
server {
    listen 4001 ssl;
   #  listen [::]:4001 ssl;

    server_name 192.168.1.162;

    ssl on;
    ssl_certificate  /var/www/cert2019/wyserver.crt;
    ssl_certificate_key  /var/www/cert2019/wyserver.key;

    root /var/www/test123;

    # Add index.php to the list if you are using PHP
    # index index.html index.htm index.nginx-debian.html;
}

#################
server {
    listen 80 ;
    # listen [::]:80 ;

    server_name  test1621.wzh;

    server_name_in_redirect off;
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    location / {
             proxy_pass http://192.168.1.162:8001/;
    }
}

server {
    listen 443  ; # ssl ;
    # listen [::]:443; #  ssl ;
    # ssl on;

    server_name  test1621.wzh;

    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    location / {
            proxy_pass https://192.168.1.162:4001;
     }
}
相關文章
相關標籤/搜索