直接去官網: https://nginx.org/en/download... 下載相應版本便可。
$ brew install nginx
以centOS系統爲例,有下面兩種安裝方式(推薦1)
1.) 經過rpm鏡像源安裝javascript
$ rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm $ yum install -y nginx
2.) 經過依賴包詳細安裝css
安裝nginx依賴庫pcre、zlib
$ yum install pcre pcre-devel $ yum install zlib zlib-devel
若有必要,能夠安裝c++編譯環境和openssl
$ yum install gcc-c++ $ yum install openssl openssl-devel
下載/編譯nginx
$ wget -c https://nginx.org/download/nginx-1.16.0.tar.gz $ tar -zxvf nginx-1.16.0.tar.gz # 編譯安裝 $ cd nginx-1.16.0 $ ./configure # 默認安裝在/usr/local/nginx $ make && make install # 建立軟鏈 $ ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx $ nginx -v
# windows啓動 > start nginx # linux/mac啓動 $ service nginx start # 手動指定配置 $ nginx -c /usr/local/nginx/conf/nginx.conf # -p指定nginx運行目錄(日誌存儲位置) $ nginx -c /path/nginx.conf -p /path/ # 重啓 $ nginx -s reload # 關閉 $ nginx -s stop # 查看端口 $ netstat -an | grep 端口 # linux/mac系統 > netstat -an | findstr 端口 # windows系統 # 測試web服務 $ curl -i 主機:端口 # 或 $ telnet 主機 端口 # 查看進程 $ ps -ef | grep nginx # 查看錯誤日誌 $ tail -30 /var/log/nginx/error.log
查看nginx.conf配置文件位置
$ nginx -t
確保nginx.conf裏的 include conf.d/*.conf 已啓用,沒有則添加一條
在conf.d目錄下新建server.conf文件,配置以下:
server { listen 80; server_name 127.0.0.1; client_max_body_size 100m; location / { root /app/xxx; # 項目所在目錄 index index.html index.htm; try_files $uri $uri/ /index.html; # vue單頁應用須要路由始終指向index.html } }
複製.pem和.key兩種證書到當前server配置同一個目錄下
server { listen 443; server_name 127.0.0.1; ssl on; ssl_certificate my.pem; # 替換成本身的證書 ssl_certificate_key my.key; # 替換成本身的證書 ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1.2; ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM; ssl_prefer_server_ciphers on; location / {} }
location /api { proxy_pass http://b.domain.com:9000; # 最終地址會加上/api,變成 /api/xxx #proxy_cookie_domain b.domain.com a.domain.com; # 須要修改接口返回的cookie域名時使用 }
須要注意的是,proxy_pass路徑有相對和絕對之分,如:proxy_pass http://b.domain.com:9000/; # 最終地址會替掉/api,變成 /xxx
upstream apiServer { server 10.0.0.80:5000; # 若是須要權重加 weight=數字 server 10.0.0.81:5000; } server { listen 80; server_name 127.0.0.1; location /api { proxy_pass http://apiServer; } }
須要注意的是:html
upstream名稱不該包含下劃線,由於在某些條件下,當成主機名傳給後端Java應用,會被當作域名來解析,結果返回Null,容易觸發服務器內部錯誤。建議: 使用駝峯命名規範
在location /api {}裏添加如下項:vue
add_header Access-Control-Allow-Origin *; # *表示容許全部站跨域訪問(不安全,建議指定具體容許的域名如:http://b.domain.com:9000(注意格式:http(s):// + domain + port,末尾也不能加/) add_header Access-Control-Allow-Credentials true; #此項爲容許帶cookie跨域訪問,若設置true,上面域名配置不能爲*,必須指定具體域名
能夠經過nginx配置,限制它站經過iframe嵌入訪問本站, 不加配置默認是容許訪問
# 限制爲同源可用 add_header X-Frame-Options SAMEORIGIN # 指定網站可用 add_header X-Frame-Options "ALLOW-FROM http://xxx.com:8000"; add_header Content-Security-Policy "frame-ancestors http://xxx.com:8000"; # 兼容chrome
gzip字段設置on,並設置哪些類型文件須要壓縮:java
http { include mime.conf; default_type application/octet-stream; # .... gzip on; gzip_min_length 10k; gzip_comp_level 5; gzip_types text/plain text/css application/x-javascript application/javascript text/javascript; server { # .... }
1.) 訪問服務報403權限linux
須要修改nginx.conf裏的user,好比user root;
2.) nginx重啓時報pid錯nginx
nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
解決方案:使用nginx -c
的參數指定nginx.conf文件的位置c++
# 新建nginx.pid $ mkdir -p /usr/local/nginx/logs $ touch /usr/local/nginx/logs/nginx.pid # 指定配置文件 $ nginx -c /usr/local/nginx/conf/nginx.conf