读音 Engine X
安装 nginx/Windows,需要下载 1.3.11 或以上版本
sudo yum install yum-utils
/etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
sudo yum-config-manager --enable nginx-mainline
sudo yum install nginx
启动Nginx并设置开机自动运行
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
服务的启动/停止/刷新配置文件/查看状态
systemctl start nginx.service
systemctl stop nginx.service
systemctl restart nginx.service
systemctl list-units --type=service
systemctl status nginx.service
systemctl enable nginx.service
systemctl disable nginx.service
- http://www.cnblogs.com/nick-huang/p/4638398.html
- Nginx 安装配置
- nginx服务器安装及配置文件详解
- Nginx安装及配置文件 nginx.conf 详解
C:\Users\Administrator>g:
G:\>cd G:\Program_Files\nginx-1.11.12
G:\Program_Files\nginx-1.11.12>start nginx
D:\ProgramFiles\nginx-1.13.10>nginx -h
nginx version: nginx/1.13.10
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-T : test configuration, dump it and exit
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: NONE)
-c filename : set configuration file (default: conf/nginx.conf)
-g directives : set global directives out of configuration file
查看进程
tasklist /fi "imagename eq nginx.exe"
nginx/Windows作为标准控制台应用运行,而不是系统服务。可以用下面的命令控制:
nginx -s stop # 快速退出
nginx -s quit # 优雅退出
nginx -s reload # 更换配置,启动新的工作进程,优雅的关闭以往的工作进程
nginx -s reopen # 重新打开日志文件
配置文件中的目录请使用“/”,而不是“\”做目录分隔
- Full Example Configuration
- nginx快速入门之配置篇
- Nginx 配置文件nginx.conf中文详解 - 简书 - 博客园
- nginx的配置、虚拟主机、负载均衡和反向代理(1) - (2) - (3)
可以使用确切的名字,通配符,或者是正则表达式来定义:
# 不含“Host”字段的请求,需要指定一个空名字
# 可以将IP地址作为虚拟主机名
# 特殊的虚拟主机名“$hostname”
server {
listen 80;
server_name example.org www.example.org "" 192.168.1.1;
...
}
server {
listen 80;
server_name *.example.org;
...
}
server {
listen 80;
server_name mail.*;
...
}
server {
listen 80;
server_name ~^(?<user>.+)\.example\.net$;
...
}
- 通配符名字只可以在名字的起始处或结尾处包含一个星号,并且星号与其他字符之间用点分隔。
- 有一种形如“.example.org”的特殊通配符
- 为了使用正则表达式,虚拟主机名必须以波浪线“~”起始。正则表达式是一个一个串行的测试,所以是最慢的
- 命名的正则表达式捕获组在后面可以作为变量使用:
server {
server_name ~^(www\.)?(?<domain>.+)$;
location / {
root /sites/$domain;
}
}
server {
server_name ~^(www\.)?(.+)$;
location / {
root /sites/$2;
}
}
- 在匹配所有的服务器的例子中,可以见到一个奇怪的名字“_”:
server {
listen 80 default_server;
server_name _;
return 444;
}
如果定义了大量名字,或者定义了非常长的名字,那可能需要在http配置块中使用server_names_hash_max_size和server_names_hash_bucket_size指令进行调整。
- 第一个被列出的虚拟主机即nginx的默认虚拟主机
- default_server 显式地设置某个主机为默认虚拟主机,捕获组也可以以数字方式引用:
server {
listen 192.168.1.1:80 default_server;
server_name example.net www.example.net;
...
}
server {
listen [::]:80 default_server;
server_name example.com www.example.com;
...
}
请注意"default_server"是监听端口的属性,而不是主机名的属性。
location /path/ {
root html
}
# 实际访问 html/path/
location /paths/ {
alias html/paths/
}
# 路径结尾必须加斜杠
# 工作进程数量需要不少于可用CPU的个数
worker_processes 2;
- 虽然可以启动若干工作进程运行,实际上只有一个进程在处理请求所有请求。
- 一个工作进程只能处理不超过1024个并发连接。
error_log logs/error.log debug;
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;
如果日志文件不存在,那失败原因会记录在Windows事件日志中。
access_log off;
error_log /dev/null crit;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
- https://cloud.tencent.com/document/product/400/4143
- HTTPS 简介及使用官方工具 Certbot 配置 Let’s Encrypt SSL 安全证书详细教程
server {
listen 80; # 合并HTTP/HTTPS主机
listen 443 ssl;
server_name urlnk.host;
ssl_certificate K:\env\win\ProgramData/nginx\conf\cert\urlnk.host.crt;
ssl_certificate_key K:\env\win\ProgramData/nginx\conf\cert\urlnk.host.key;
# HTTPS服务器优化
keepalive_timeout 70;
ssl_session_cache shared:SSL:10m; # 共享会话缓存
ssl_session_timeout 10m; # 缓存超时(分钟)
ssl_ciphers HIGH:!aNULL:!MD5; # 1.0.5及以后版本,默认SSL密码算法
ssl_prefer_server_ciphers on;
location / {
root D:\www\work\cdn;
index index.html index.htm;
autoindex on;
}
}
server {
listen 443 ssl http2;
server_name www.urlnk.com;
}
全局有效,不可以和自带变量重名
set $doc_root /srv/www/htdocs;
fastcgi_param DOCUMENT_ROOT $doc_root;
https://www.nginx.com/resources/wiki/start/topics/examples/phpfastcgionwindows/
try_files 和 QUERY_STRING
location / {
root K:/env/win/ProgramData/nginx/html;
index index.html index.php;
autoindex on;
try_files $uri $uri/ /index.php$uri$is_args$args;
}
FastCGI
location ~ \.php($|/) {
root K:/env/win/ProgramData/nginx/html;
fastcgi_pass fastcgi_backend;
fastcgi_read_timeout 150;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param RUNTIME_ENVIROMENT 'PRO';
include fastcgi_params;
}
使用 PATH_INFO
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
- 相对路径 nginx 和 php-fpm 启动程序的命令行初始目录,php-fpm.conf 可以改 chdir 选项
fastcgi_param SCRIPT_FILENAME html$fastcgi_script_name;
- 绝对路径 更改 root 文档根路径不会影响远程 php-fpm 运行
root html;
fastcgi_param SCRIPT_FILENAME $doc_root$fastcgi_script_name;
参考:
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Origin "*";
add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
server {
listen 80;
server_name example.org;
return 301 https://www.example.org$request_uri;
}
# 或者
server {
listen 80;
server_name localhost;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
${server_name} 可以换成 $host
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 5;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php;
# 配置 Apache 虚拟主机
<VirtualHost *:8080>
ServerAdmin [email protected]
DocumentRoot "/usr/local/nginx/html"
ServerName "192.168.80.22"
ErrorLog "logs/dummy-host2.example.com-error_log"
CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
# 设置权限
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
# 设置 Nginx 配置文件 .php 文件让 Apache 来解析
location ~ \.php$ {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://192.168.80.22:8080;
}
upstream fastcgi_backend {
server 127.0.0.1:9001;
server 127.0.0.1:9002;
}
location / {
proxy_pass http://fastcgi_backend;
}
# 开启gzip
gzip on;
# 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
gzip_min_length 1k;
# gzip 压缩级别,1-10,数字越大压缩的越好,也越占用CPU时间,后面会有详细说明
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 font/ttf font/otf image/svg+xml;
# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;
# 禁用IE 6 gzip
gzip_disable "MSIE [1-6]\.";
# 开启缓存
location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {
access_log off;
expires 30d;
}
location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {
access_log off;
expires 24h;
}
location ~* ^.+\.(html|htm)$ {
expires 1h;
}
location ~* ^.+\.(eot|ttf|otf|woff|svg)$ {
access_log off;
expires max;
}
# 格式
# expires 30s;
# expires 30m;
# expires 2h;
# expires 30d;
netstat -aon|findstr "443"
tasklist|findstr "1408"
taskkill /F /pid 1408
可能和已经运行的 nginx (cmd 下通过运行 .bat 启动,进程可能是 RuntimeBroker.exe) 或 httpd 冲突;
也可能是 vmware-hostd.exe (需要停止 VMware 所有服务,并将启动类型设置为手动)
sublime_text.exe 也会
控制面板\网络和 Internet\网络连接\传入的连接
右键菜单属性:虚拟专用网络不要勾选
参考:
- Nginx 错误 bind() to 0.0.0.0:443 failed 解决方法
- Nginx 错误处理方法: bind() to 0.0.0.0:80 failed
- Port 443 in use by “Unable to open process” with PID 4
http {
server_names_hash_bucket_size 512;
值为 32 的倍数
以管理员身份打开命令提示符
netsh winsock reset
SSL 证书必须放 conf 目录下,用相对路径,如:cert/example.com.crt
创建快捷方式放到
%programdata%\Microsoft\Windows\Start Menu\Programs\Startup
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
shell:startup
shell:Common Startup
C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup