Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 2

0
votes
answers
68 views
+10

HTTPS到HTTP重定向nginx

0

問題是,我的本地nginx服務器上的ssl證書已過期,我需要幾天的時間才能獲得新的證書。 該網站通過http工作,但是,瀏覽器記住https的現金(並且有很多本地用戶)。HTTPS到HTTP重定向nginx

要解決這個問題,我必須強制將https重定向到http。我生成的自簽名證書,並添加幾行代碼:

server { 
    listen 443; 
    server_name site.com; 
    ssl on; 
    rewrite^http://$server_name$request_uri? permanent; 

    ssl_certificate /etc/ssl/site/cert.crt; 
    ssl_certificate_key /etc/ssl/site/sert.key; 
} 

server { 
    listen 80; 
    ssl off; 
    .... 
} 

通過https該網頁提供了隱私錯誤的Net :: ERR_CERT_AUTHORITY_INVALID

我知道,通過443端口瀏覽器嘗試設置安全頻道先發送http請求,所以我需要某種解決方法。

任何人都可以幫忙嗎?

沙发
0
0

這個問題已經answered

但是here你可以得到一個免費的,被廣泛接受的證書!

+0

這個答案對我來說是不可接受的,因爲我的證書是自簽名的並給出錯誤。我無法獲得免費的證書,因爲我的服務器是本地的(不通過www接受) – Leeloo

0
votes
answers
72 views
+10

Docker-compose和nginx代理

1

我正在嘗試使用jwilder/nginx-proxy作爲我的angular2應用程序的反向代理,該應用程序被分解爲3個容器(角度,快速和數據庫)。Docker-compose和nginx代理

我已經嘗試了不同的配置,以代理請求,以我的應用程序上的端口80,但是當我嘗試運行搬運工,撰寫我得到:

ERROR: for angular Cannot start service angular: driver failed programming 
external connectivity on endpoint example_angular_1 
(335ce6d0c775b7837eb436fff97bbb56bfdcaece22d51049e1eb4bf5ce45553c): Bind for 
0.0.0.0:80 failed: port is already allocated 

雖然該消息是很清楚,上有衝突端口80,我找不到解決它的方法,當我將角容器設置爲在端口4200上工作時,它工作得很好,但是每次我想要訪問該頁面時都必須在URL中指定端口號。我現在用的是反向代理,因爲它是不是會在我的環境中運行的唯一的應用程序

下面是我泊塢窗,compose.yml

version: '3' 

services: 
    nginx-proxy: 
     image: jwilder/nginx-proxy 
     container_name: nginx-proxy 
     ports: - "80:80" 
     volumes: - /var/run/docker.sock:/tmp/docker.sock:ro 

    angular: 
     build: client 
     ports: - "80" 
     environment: 
      - VIRTUAL_HOST=example.com 
      - VIRTUAL_PORT=80 
     restart: always 

    express: 
     build: server 
     ports: - "3000:3000" 
     links: - database 
     restart: always 

    database: 
     image: mongo 
     ports: - "27017:27017" 
     restart: always 

networks: 
    default: 
    external: 
    name: nginx-proxy 

而且Dockerfile的角度容器

FROM node:8-alpine as builder 

COPY package.json package-lock.json ./ 

RUN npm set progress=false && npm config set depth 0 && npm cache clean --force 

RUN npm i && mkdir /ng-app && cp -R ./node_modules ./ng-app 

WORKDIR /ng-app 

COPY . . 

RUN $(npm bin)/ng build --prod --build-optimizer 

FROM nginx:1.13.3-alpine 

COPY nginx/default.conf /etc/nginx/conf.d/ 

RUN rm -rf /usr/share/nginx/html/* 

COPY --from=builder /ng-app/dist /usr/share/nginx/html 

CMD ["nginx", "-g", "daemon off;"] 

EXPOSE 80 
+0

爲什麼使用2個nginx?只需將角色nginx中的代理通行規則放在表達式中即可實現所需的全部功能。 – Stefano

+0

1是一個反向代理,第二個是承載angular2應用程序本身。 express容器是angular的後端,我希望儘可能使模塊儘可能模塊化,以便組件可以自行重用。我不想讓角容器知道其他應用程序,如果這是有道理的。 – DKMudrechenko

沙发
0
0

問題是,您試圖在主機上打開端口80兩次。一次用於nginx-proxy,一次用於角度。從角度移除「端口80」。

+0

我試過刪除***端口: - 「80」***之前的角度配置部分。 '''docker-compose'''啓動時沒有錯誤,但是我沒有看到關於啓動角容器的消息旁邊的綠色*** done ***,而且當我看到端口80上沒有任何東西在監聽時測試。 – DKMudrechenko

+0

這是因爲你在localhost上傳遞代理。嘗試在'angular:80'上設置代理傳遞,或者爲角形容器使用不同的端口。 – Stefano

板凳
0
0

如果你想使用nginx作爲反向代理,你需要使用80端口來訪問它。然後修改nginx配置重定向到角容器和端口(例如81)。試試這個:「proxy_pass http://angular:81」。這應該工作。

地板
0
1

瀏覽器將與您設置的虛擬端口上的容器對話。 也許你可以通過api端點將請求指向後端

0
votes
answers
89 views
+10

使用Robo 3T連接到遠程MongoDB

1

我試圖在Mac下使用Robomongo(或Robo 3T)來控制遠程Ubuntu & Nginx服務器中的我的mongodb。使用Robo 3T連接到遠程MongoDB

通常情況下,我需要在終端上使用ssh xxx.xx.xx.xx,並使用用戶名和密碼連接到服務器。在/etc/nginx/sites-enabled/myweb.io,有listen 443 ssl

在Robo 3T中,我試圖建立與Use SSH tunnel的連接。我嘗試了端口號44380。但它給了我一個錯誤:Error: Resource temporarily unavailable. Error when starting up SSH session: -13. (Error #35)

有誰知道如何解決這個問題?

enter image description here

+0

嘗試連接而不SSH隧道和SSH在端口22上運行(如果你沒有改變它,但你應該改變它)。 – Shubhamoy

+0

如果我沒有SSH隧道連接,我應該使用哪種方式? – SoftTimur

+0

只需取消SSH隧道並嘗試連接。 – Shubhamoy

沙发
0
1

正確的設置是

SSH

1)下,檢查User SSH tunnel,使用端口22

2)和下Connection,寫127.0.0.1:27017

0
votes
answers
65 views
+10

在nginx上運行兩個以上的web應用程序

0

在Ubuntu上,我試圖運行三個使用nginx和uwsgi的web應用程序。我能夠使用以下nginx配置運行兩個應用程序,但不能運行第三個應用程序。請幫助我如何運行它。在nginx上運行兩個以上的web應用程序

首先nginx的配置:air-quality.conf

server { 
    listen 80; 
    real_ip_header X-Forwarded-For; 
    set_real_ip_from 127.0.0.1; 
    server_name localhost; 

    location/{ 
     include uwsgi_params; 
     uwsgi_pass unix:/var/www/html/air-quality/socket.sock; 
     uwsgi_modifier1 30; 
    } 

    error_page 404 /404.html; 
    location = /404.html { 
     root /usr/share/nginx/html; 
    } 

    error_page 500 502 503 504 /50x.html; 
    location = /50x.html{ 
     root /usr/share/nginx.html; 
    } 
} 

沒有麻煩,上面的配置制定並表現出對210.123.33.247:80/airData輸出。 第二個nginx配置位於items-rest.conf。它是:

server { 
    listen 81; 
    real_ip_header X-Forwarded-For; 
    set_real_ip_from 127.0.0.1; 
    server_name localhost; 

    location/{ 
     include uwsgi_params; 
     uwsgi_pass unix:/var/www/html/items-rest/socket.sock; 
     uwsgi_modifier1 30; 
    } 

    error_page 404 /404.html; 
    location = /404.html { 
     root /usr/share/nginx/html; 
    } 

    error_page 500 502 503 504 /50x.html; 
    location = /50x.html{ 
    root /usr/share/nginx.html; 
    } 
} 

它還顯示210.123.33.247:81/items上的預期輸出。 但第三個不起作用。配置文件是:

server { 
    list en 8090; 
    real_ip_header X-Forwarded-For; 
    set_real_ip_from 127.0.0.1; 
    server_name localhost; 

    location { 
     include uwsgi_params; 
     uwsgi_pass unix:/var/www/html/display_air/socket.sock; 
     uwsgi_modifier1 30; 
    } 

    error_page 404 /404.html; 
    location = /404.html { 
     root /usr/share/nginx/html; 
    } 

    error_page 500 502 503 504 /50x.html; 
    location = /50x.html{ 
     root /usr/share/nginx.html; 
    } 
} 

在嘗試運行第三方應用,我想sudo systemctl reload nginxsudo systemctl restart nginx。然後,它產生的錯誤說

nginx的:在/etc/nginx/sites-enabled/display-air.conf:7

[EMERG]在 「位置」 指令參數無效號碼是什麼我做錯了嗎?任何人都請幫助我。

沙发
0
0

你在這裏

location { 
    include uwsgi_params; 
    uwsgi_pass unix:/var/www/html/display_air/socket.sock; 
    uwsgi_modifier1 30; 
} 

缺少一個斜槓應該是

location/{ 
    include uwsgi_params; 
    uwsgi_pass unix:/var/www/html/display_air/socket.sock; 
    uwsgi_modifier1 30; 
} 
+0

多麼愚蠢的錯誤。你很棒!你救了我很多痛苦。謝謝你,尼斯。 –

+0

感謝您的幫助,我能夠運行第三個應用程序。但是當我從網絡(210.123.33.247:8090)登錄時,發生內部服務器錯誤。你能猜到爲什麼會發生?當我獨立運行應用程序時,即不通過nginx或uwsgi,它可以正常工作。這意味着該程序沒有錯誤,對嗎?還有什麼可能是這個問題? –

0
votes
answers
51 views
+10

如何更改與docker一起使用時的nginx端口

0

我是碼頭初學者,我做的第一件事是下載nginx並試圖將其掛載到80:80端口,但Apache已經坐在那裏。如何更改與docker一起使用時的nginx端口

docker container run --publish 80:80 nginx 

docker container run --publish 3000:3000 nginx

我試圖做這樣的3000:3000使用它在端口3000,但它不能正常工作。而且它不記錄任何東西,我可以使用全球化志願服務青年。

沙发
0
5

當您開始使用Docker時,您可能會在DockerHub上找到有關圖像的有用信息。例如用nginx你有一段關於如何去expose public ports

你可以使用:在你的本地主機

docker run --publish 3000:80 nginx 

3000端口將被轉發到端口80是nginx的圖像使用等待HTTP連接的端口。

我也推薦你閱讀這個官方文檔about networking in Docker

0
votes
answers
61 views
+10

在Nginx服務器中設置HMVC Codeigniter

0

在Nginx服務器上設置Codeigniter HMVC。我搜索了很多,但沒有得到完美的解決方案。 任何人都有演示請分享。在Nginx服務器中設置HMVC Codeigniter

+3

你嘗試了什麼?只需使用https://www.nginx.com/resources/wiki/start/topics/recipes/codeigniter/和HMVC第三方,無需做更多 –

沙发
0
0

是的,我試過了,但沒有重寫規則HMVC使其工作。

0
votes
answers
71 views
+10

如何從服務器的公共IP訪問碼頭集裝箱

0

我試圖使用碼頭在服務器上部署我的網站。我有一個與centOS和碼頭安裝在它上面的液滴。當我嘗試運行一個容器(https://hub.docker.com/r/richarvey/nginx-php-fpm/)時,我期望通過我的瀏覽器使用公共IP(ipv4)訪問我的網站,但我認爲這還不夠。如何從服務器的公共IP訪問碼頭集裝箱

有什麼問題?

+0

您啓動容器時採取了哪些步驟?你能從127.0.0.1上的服務器訪問它嗎?我猜測這個端口沒有暴露在公共IP上。 – ext

沙发
0
0

您需要將容器端口發佈到主機。有關詳細信息,請參見https://docs.docker.com/engine/reference/run/#expose-incoming-ports

docker run -d -p 80:80 -p 443:443 richarvey/nginx-php-fpm 
0
votes
answers
103 views
+10

如何在Alpine linux上添加用於nginx的Lua模塊?

0

我想在啓用Lua模塊的情況下爲nginx提供精簡的Docker鏡像。我如何基於Alpine linux創建這個?如何在Alpine linux上添加用於nginx的Lua模塊?

沙发
0
-1

你看看在泊塢樞紐

https://hub.docker.com/

,你會發現Nginx上圖像的基礎上,高山Linux的,和Lua支持

一些例子

https://hub.docker.com/r/ilagnev/alpine-nginx-lua/

https://hub.docker.com/r/firesh/nginx-lua/

看一看的Dockerfile更多細節

+0

我發現這兩個,但發現沒有兩個是最新(最後推一年前)。另外,他們缺乏關於如何啓用模塊的信息。 – Marian

+0

這個文檔是否正確? https://github.com/openresty/lua-nginx-module#installation – user2915097

板凳
0
1

這裏是一個Dockerfile

FROM alpine:3.6 

RUN apk add --no-cache nginx-mod-http-lua 

# Delete default config 
RUN rm -r /etc/nginx/conf.d && rm /etc/nginx/nginx.conf 

# Create folder for PID file 
RUN mkdir -p /run/nginx 

# Add our nginx conf 
COPY ./nginx.conf /etc/nginx/nginx.conf 

CMD ["nginx"] 

安裝nginx-mod-http-lua包也將安裝nginxluajit,等等。

nginx.conf至少應包含這樣的:

load_module /usr/lib/nginx/modules/ndk_http_module.so; 
load_module /usr/lib/nginx/modules/ngx_http_lua_module.so; 

pcre_jit on; 

events { 
    worker_connections 1024; 
} 

daemon off; 
+0

如果你沒有從默認的[nginx中刪除include/etc/nginx/modules/*。conf;'這些'load_module'的.conf](https://github.com/alpinelinux/aports/blob/954391ce7493439d12180d5c5118dee26f8ac587/main/nginx/nginx.conf#L15)。 –

+0

@Marian:我們如何在這種情況下安裝luarocks?我確實找到了luajit的包含路徑。 – Raeesaa

0
votes
answers
78 views
+10

在Ubuntu上使用DJANGO服務NGINX

0

我試圖在Nginx服務器上運行我的django(1.8)項目,因爲它速度更快。我可以通過使用uwsgi --ini命令來設置套接字。所以我想要做的就是單獨運行NGINX想運行我的django項目,有沒有辦法做到這一點?那麼當uwsgi --ini命令結束時,由uwsgi創建的套接字將自動移除。在Ubuntu上使用DJANGO服務NGINX

NGINX config and .ini ia as shown below : 

# mysite_nginx.conf 

# the upstream component nginx needs to connect to 
upstream django { 

    server unix:///var/www/html/vir/crum/crumbs.sock; 

} 

    # configuration of the server 
    server { 
     # the port your site will be served on 
     listen  8000; 
     # the domain name it will serve for 
     server_name .localhost.com; 
     charset  utf-8; 


     # max upload size 
     client_max_body_size 75M; # adjust to taste 

     # Django media 
     location /media { 
      alias /var/www/html/alteryx_vir/crum/media; 
     } 

     location /static { 
      alias /var/www/html/vir/crum/static; 

     } 

     # Finally, send all non-media requests to the Django server. 
     location/{ 
      uwsgi_pass django; 

      /var/www/html/vir/crum/uwsgi_params; 
     } 
    } 

    >>> uwsgi.ini file : 

    # mysite_uwsgi.ini file 
    [uwsgi] 

    # Django-related settings 
    # the base directory (full path) 
    chdir   = /var/www/html/vir/crumb/ 
    # Django's wsgi file 
    module   = crum.wsgi 
    # the virtualenv (/alteryx_vir/) 
    home   = /var/www/html/alteryx_vir/ 
    # process-related settings 
    # master 
    master   = true 
    # maximum number of worker processes 
    processes  = 10 
    # the socket (use the full path to be safe 
    socket   = 
    /var/www/html/alteryx_vir/crum/crum.sock 
    #socket   = var/run/uwsgi/crum.sock 


    # ... with appropriate permissions - may be needed 
    chmod-socket = 666 
    # clear environment on exit 
    vacuum   = true 

在此先感謝您的幫助。

沙发
0
0

是Atlast我可以通過使用UWSGI EMPEROR模式自動執行所有操作。 現在所有的命令都可以自動完成你需要做的就是啓動NGINX服務器。

Emperror模式:

編輯/etc/rc.local中並添加:

/usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid www-data --daemonize /var/log/uwsgi-emperor.log 
板凳
0
0

你問的沒有意義。套接字用於nginx和uWSGI之間的通信。如果uWSGI沒有運行,那麼套接字的另一端沒有任何內容,並且沒有爲您的應用程序提供服務。

您需要nginx和uWSGI。

+0

是啊,我是小姐,然後引導thanx您的信息先生。 @丹尼爾,我怎麼能自動化。我不想運行一些命令來啓動uwsgi。希望你得到了我的觀點 –

+0

與任何服務器進程(包括nginx本身)一樣,您可以使用發行版的進程管理器 - 例如systemd或upstart - 或supervisord之類的東西。 –

0
votes
answers
63 views
+10

NGINX + Docker Compose路由問題

0

我有一個docker撰寫文件,包含兩個微服務,我想利用URI路由來處理CORS。這裏是我撰寫的文件:NGINX + Docker Compose路由問題

version: "3.1" 
services: 
    auth-api: 
    image: xxxx/auth-api:latest 
    restart: always 
    depends_on: 
     - "user-api" 
    user-api: 
    image: xxxx/user-api:latest 
    restart: always 
nginx: 
    image: nginx 
    restart: always 
    ports: 
     - "80:80" 
    links: 
     - "auth-api" 
     - "user-api" 
    volumes: 
     - ./nginx:/etc/nginx 

我想用NGINX的路由,但我遇到了問題,用404的或者405試圖訪問該資源時的。我嘗試了幾種不同的配置,有一段時間NGINX說它在開始時找不到api端點,我認爲我的問題主要是圍繞路由配置。對於這些請求,我希望它是/auth/user

worker_processes 1; 

events { worker_connections 1024; } 

http { 

    sendfile on; 

    upstream auth-target { 
     server auth-api:8080; 
    } 

    upstream user-target { 
     server user-api:8080; 
    } 

    server { 
     listen  80; 

     location /auth { 

      proxy_pass http://auth-target; 

      proxy_redirect  off; 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header X-Forwarded-Host $server_name; 
     } 

     location /user { 

      proxy_pass http://user-target; 

      proxy_redirect  off; 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header X-Forwarded-Host $server_name; 
     } 


    } 

} 

我對NGINX很新,所以我不確定自己做的是對的。我還應該注意到,這兩個API都有8080作爲容器構建的一部分公開。

沙发
0
0

所以這是我的問題。路由工作正常,但我從我的服務中返回404。這是因爲位置路由與請求一起傳遞。所以,最後我發現了這樣的回答:

https://serverfault.com/questions/562756/how-to-remove-the-path-with-an-nginx-proxy-pass

它指向你需要一個尾隨斜線,以去除的位置,所以我的配置文件最終看上去是這樣的:

location /auth/ { 

      proxy_pass http://auth-target/; 

      proxy_redirect  off; 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header X-Forwarded-Host $server_name; 
     }