环境:阿里云 centos7
flask web 应用, gunicorn 已经启动,访问ip:8888
正常访问
nginx 正常启动,无法直接访问 ip ,浏览器显示: This site can ’ t be reached
我有两个配置文件conf/nginx.conf
, site-enable/kaoshixing.conf
,内容分别如下:
user root;
worker_processes auto;
# worker_cpu_affinity auto;
error_log /home/admin/kaoshixing/nginx/logs/error.log;
pid /home/admin/kaoshixing/nginx/logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 20480;
}
http {
include mime.types;
default_type application/octet-stream;
fastcgi_intercept_errors on;
log_format milog '$server_addr\t$hostname\t$remote_addr\t$http_x_forwarded_for\t$time_local\t$request_uri\t$request_length\t$bytes_sent\t$request_time\t$status\t$upstream_addr\t$upstream_cache_status\t$upstream_response_time\t$http_user_agent\t';
####full-format log for debug
log_format debug_log '$remote_addr\t$server_addr\t$hostname\t$time_local\t$host\t$request\t$status\t$body_bytes_sent\t$http_referer\t$http_user_agent\t$http_x_forwarded_for\t$request_uri\t$request_length\t$bytes_sent\t$request_body\t$request_time\t$upstream_response_time\t$upstream_addr\t$upstream_cache_status';
access_log /home/admin/kaoshixing/log/nginx/access.log milog;
sendfile on;
keepalive_timeout 65;
client_max_body_size 120m;
server_names_hash_bucket_size 128;
proxy_headers_hash_bucket_size 128;
proxy_headers_hash_max_size 8192;
proxy_connect_timeout 10;
proxy_read_timeout 120;
proxy_send_timeout 120;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
gzip on;
gzip_types application/json application/x-json text/plain application/x-javascript text/css text/javascript application/xml text/xml image/jpeg image/gif image/png;
gzip_proxied expired no-cache no-store private auth;
gzip_min_length 1k;
gzip_buffers 16 64k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_vary on;
limit_req_zone $server_port zone=tp:500m rate=1700r/s;
limit_req_zone $server_port zone=tps:500m rate=1100r/s;
limit_req_zone $binary_remote_addr zone=tip:500m rate=100r/s;
include /home/admin/kaoshixing/nginx/site-enable/*.conf;
}
*
upstream kaoshixing.com_backend{
server 0.0.0.0:8888 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 80;
server_name www.kaoshixing.com;
access_log /home/admin/kaoshixing/nginx/logs/ksxing.com.log milog;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://kaoshixing.com_backend;
}
}
server {
listen 443 ssl;
server_name www.kaoshixing.com;
access_log /home/admin/kaoshixing/nginx/logs/ksxing.com.log milog;
ssl on;
ssl_certificate ssl/kaoshixing.com.crt;
ssl_certificate_key ssl/kaoshixing.com.key;
ssl_session_cache shared:SSL:80m;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://kaoshixing.com_backend;
proxy_redirect http://www.kaoshixing.com https://www.kaoshixing.com;
}
}
server {
listen 80;
server_name kaoshixing.com;
access_log /home/admin/kaoshixing/nginx/logs/ksxing.com.log milog;
location / {
rewrite ^(.*) http://www.$host$1 redirect;
}
}
有試過nginx -t檢查配置檔案是否正確
看你這http和https都配置了相同的server_name。 試試看將80埠也配置到https中,看看行不行
server {
listen 80;
listen 443 ssl;
......
}
因為你設定了
server_name
,所以nginx只监听域名,不监听ip。换句话说,nginx不知道自己的外网ip,它会从配置文件中获得信息。简单的解决办法是删除
server_name
。也可以这样
server_name 1.1.1.1 www.kaoshixing.com;
只是這樣就不能泛網域解析了。因為你在所有server區塊都設定了server_name,當瀏覽器存取時,nginx會一個個符合server_name,如果都不符合(用ip存取),nginx就會使用default_server,但你沒設定default_server,問題可能就出在這,把一個server塊改成這樣試試?
(還有就是80埠可能被其他程式佔用)
考慮阿里雲的安全策略以及CentOS7的防火牆策略.
CentOS7預設是不開放80埠的.
確認下是設定問題導致nginx起不來 還是外網telnet 80不通。我遇到的一般是防火牆設定的或是80被預設vps裝的apache佔用。
國內雲廠商的80埠都需要備案才能放通的。
另外單獨檢查一下安全群組原則和VPC的防火牆什麼的。